UNPKG

erm2openapi

Version:

Create OpenAPI documentation from Mongoose schemas for express-restify-mongoose servers.

1,269 lines (1,268 loc) 30.7 kB
{ "openapi": "3.0.3", "tags": [ { "name": "story", "description": "REST interface for story model" }, { "name": "person", "description": "REST interface for person model" } ], "paths": { "/api/v1/story": { "get": { "summary": "Query story", "operationId": "getStory", "tags": ["story"], "parameters": [ { "name": "sort", "in": "query", "schema": { "type": "string" } }, { "name": "skip", "in": "query", "schema": { "type": "number" } }, { "name": "limit", "in": "query", "schema": { "type": "number" } }, { "name": "query", "in": "query", "schema": { "type": "string" } }, { "name": "populate", "in": "query", "schema": { "type": "string" } }, { "name": "select", "in": "query", "schema": { "type": "string" } }, { "name": "distinct", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/story" } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "default": { "description": "Unexpected Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } } }, "post": { "summary": "Create new story", "operationId": "createStory", "tags": ["story"], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/story" } } }, "required": true }, "responses": { "201": { "description": "Created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/story" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "default": { "description": "Unexpected Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } } } }, "/api/v1/story/count": { "get": { "summary": "Get story count", "operationId": "getStoryCount", "tags": ["story"], "parameters": [ { "name": "sort", "in": "query", "schema": { "type": "string" } }, { "name": "skip", "in": "query", "schema": { "type": "number" } }, { "name": "limit", "in": "query", "schema": { "type": "number" } }, { "name": "query", "in": "query", "schema": { "type": "string" } }, { "name": "populate", "in": "query", "schema": { "type": "string" } }, { "name": "select", "in": "query", "schema": { "type": "string" } }, { "name": "distinct", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "count": { "type": "number" } }, "required": ["count"] } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "default": { "description": "Unexpected Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } } } }, "/api/v1/story/{id}": { "get": { "summary": "Get story by id", "operationId": "getStoryById", "tags": ["story"], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/story" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "default": { "description": "Unexpected Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } } }, "post": { "summary": "Update story by id", "operationId": "updateStory", "tags": ["story"], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/story" } } }, "required": true }, "responses": { "200": { "description": "Updated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/story" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "default": { "description": "Unexpected Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } } }, "put": { "summary": "Update story by id", "operationId": "replaceStory", "tags": ["story"], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/story" } } }, "required": true }, "responses": { "200": { "description": "Updated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/story" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "default": { "description": "Unexpected Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } } }, "patch": { "summary": "Update story by id", "operationId": "patchStory", "tags": ["story"], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/story" } } }, "required": true }, "responses": { "200": { "description": "Updated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/story" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "default": { "description": "Unexpected Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } } }, "delete": { "summary": "Delete story by id", "operationId": "deleteStory", "tags": ["story"], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "204": { "description": "Deleted" }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "default": { "description": "Unexpected Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } } } }, "/api/v1/story/{id}/shallow": { "get": { "summary": "Get story by id shallow", "operationId": "getStoryByIdShallow", "tags": ["story"], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/story" } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "default": { "description": "Unexpected Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } } } }, "/api/v1/person": { "get": { "summary": "Query person", "operationId": "getPerson", "tags": ["person"], "parameters": [ { "name": "sort", "in": "query", "schema": { "type": "string" } }, { "name": "skip", "in": "query", "schema": { "type": "number" } }, { "name": "limit", "in": "query", "schema": { "type": "number" } }, { "name": "query", "in": "query", "schema": { "type": "string" } }, { "name": "populate", "in": "query", "schema": { "type": "string" } }, { "name": "select", "in": "query", "schema": { "type": "string" } }, { "name": "distinct", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/person" } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "default": { "description": "Unexpected Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } } }, "post": { "summary": "Create new person", "operationId": "createPerson", "tags": ["person"], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/person" } } }, "required": true }, "responses": { "201": { "description": "Created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/person" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "default": { "description": "Unexpected Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } } } }, "/api/v1/person/count": { "get": { "summary": "Get person count", "operationId": "getPersonCount", "tags": ["person"], "parameters": [ { "name": "sort", "in": "query", "schema": { "type": "string" } }, { "name": "skip", "in": "query", "schema": { "type": "number" } }, { "name": "limit", "in": "query", "schema": { "type": "number" } }, { "name": "query", "in": "query", "schema": { "type": "string" } }, { "name": "populate", "in": "query", "schema": { "type": "string" } }, { "name": "select", "in": "query", "schema": { "type": "string" } }, { "name": "distinct", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "count": { "type": "number" } }, "required": ["count"] } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "default": { "description": "Unexpected Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } } } }, "/api/v1/person/{id}": { "get": { "summary": "Get person by id", "operationId": "getPersonById", "tags": ["person"], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/person" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "default": { "description": "Unexpected Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } } }, "post": { "summary": "Update person by id", "operationId": "updatePerson", "tags": ["person"], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/person" } } }, "required": true }, "responses": { "200": { "description": "Updated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/person" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "default": { "description": "Unexpected Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } } }, "put": { "summary": "Update person by id", "operationId": "replacePerson", "tags": ["person"], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/person" } } }, "required": true }, "responses": { "200": { "description": "Updated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/person" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "default": { "description": "Unexpected Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } } }, "patch": { "summary": "Update person by id", "operationId": "patchPerson", "tags": ["person"], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/person" } } }, "required": true }, "responses": { "200": { "description": "Updated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/person" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "default": { "description": "Unexpected Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } } }, "delete": { "summary": "Delete person by id", "operationId": "deletePerson", "tags": ["person"], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "204": { "description": "Deleted" }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "default": { "description": "Unexpected Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } } } }, "/api/v1/person/{id}/shallow": { "get": { "summary": "Get person by id shallow", "operationId": "getPersonByIdShallow", "tags": ["person"], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/person" } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } }, "default": { "description": "Unexpected Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error" } } } } } } } }, "components": { "schemas": { "error": { "required": ["name", "message"], "type": "object", "properties": { "name": { "type": "string" }, "message": { "type": "string" } } }, "story": { "type": "object", "required": ["title"], "properties": { "author": { "oneOf": [ { "type": "string" }, { "$ref": "#/components/schemas/person" } ] }, "title": { "type": "string" }, "fans": { "type": "array", "items": { "oneOf": [ { "type": "string" }, { "$ref": "#/components/schemas/person" } ] } }, "_id": { "type": "string" } } }, "person": { "type": "object", "required": ["name"], "properties": { "name": { "type": "string" }, "age": { "type": "number" }, "stories": { "type": "array", "items": { "oneOf": [ { "type": "string" }, { "$ref": "#/components/schemas/story" } ] } }, "_id": { "type": "string" } } } } }, "info": { "title": "Test service", "version": "1.0.0" } }