source upload
This commit is contained in:
395
contrib/mORMot/CrossPlatform/templates/Swagger.json.mustache
Normal file
395
contrib/mORMot/CrossPlatform/templates/Swagger.json.mustache
Normal file
@@ -0,0 +1,395 @@
|
||||
{{! recursive partial used to expand type definition
|
||||
HACK: Objects, Enums, Records and Arrays, which are used by reference
|
||||
and defined outside the main units have to be handled explicitly.
|
||||
All internal types have their Swagger-Typ defined. }}
|
||||
{{<write-type}}{{#typeSwagger}}{{#Equals typeSwagger,typeSource}}{"$ref":"#/definitions/{{typeSwagger}}"}{{/Equals}}{{^Equals typeSwagger,typeSource}}{{typeSwagger}}{{/Equals}}{{/typeSwagger}}{{^typeSwagger}}{{#nestedSimpleArray}}{"type":"array","items":{{>write-type}}}{{/nestedSimpleArray}}{{/typeSwagger}}{{/write-type}}
|
||||
|
||||
{
|
||||
"swagger": "2.0",
|
||||
"info": {
|
||||
"description": "Generated by {{exeInfo}} using mORMot {{mORMotVersion}} at {{time}}",
|
||||
"title": "{{root}} API{{#exeVersion}} {{.}}{{/exeVersion}}",
|
||||
"version": "{{exeVersion}}"
|
||||
},
|
||||
"host": "{{host}}",
|
||||
"basePath": "/{{root}}",
|
||||
"tags": [
|
||||
{{#orm}}
|
||||
{
|
||||
"name": "{{tableName}}",
|
||||
"description": "ORM endpoint for {{root}}/{{tableName}} record"
|
||||
}{{^-last}},{{/-last}}
|
||||
{{/orm}}
|
||||
{{#soa}}{{#hasorm}},{{/hasorm}}
|
||||
{{#services}}
|
||||
{
|
||||
"name": "{{uri}}",
|
||||
"description": {{#serviceDescription}}{{jsonQuote serviceDescription}}{{/serviceDescription}}{{^serviceDescription}}"SOA endpoint for {{root}}/{{uri}} service"{{/serviceDescription}}
|
||||
}{{^-last}},{{/-last}}
|
||||
{{/services}}
|
||||
{{/soa}}
|
||||
],
|
||||
|
||||
"definitions": {
|
||||
{{#orm}}
|
||||
"{{tableName}}": {
|
||||
"type": "object",
|
||||
"description": "ORM {{tableName}} record definition",
|
||||
"properties": {
|
||||
"ID":{"type":"integer","format":"int64"}{{#fields}},"{{name}}":{{typeSwagger}}{{/fields}}
|
||||
}
|
||||
},
|
||||
{{/orm}}
|
||||
{{#records}}
|
||||
"{{name}}": {
|
||||
"type": "object",
|
||||
"description": "SOA {{name}} object DTO definition",
|
||||
"properties": {
|
||||
{{#fields}}
|
||||
"{{propName}}": {{>write-type}}{{^-last}},{{/-last}}
|
||||
{{/fields}}
|
||||
}
|
||||
},
|
||||
|
||||
{{/records}}
|
||||
{{#arrays}}
|
||||
"{{name}}": {
|
||||
"type": "array",
|
||||
"summary": "SOA {{name}} array DTO definition",
|
||||
"items": {{>write-type}}
|
||||
},
|
||||
{{/arrays}}
|
||||
{{#enumerates}}
|
||||
"{{name}}": {
|
||||
"type": "string",
|
||||
"description": "SOA {{name}} enumeration DTO definition",
|
||||
"enum": [
|
||||
{{#values}}
|
||||
"{{.}}"{{^-last}},{{/-last}}
|
||||
{{/values}}
|
||||
],
|
||||
"required": true
|
||||
},
|
||||
|
||||
{{/enumerates}}
|
||||
"__error": {
|
||||
"type": "object",
|
||||
"description": "Generic error information",
|
||||
"properties": {
|
||||
"errorCode": {"type":"integer"},"errorText":{"type":"string"} }
|
||||
}
|
||||
},
|
||||
"paths": {
|
||||
{{#orm}}
|
||||
|
||||
"/{{tableName}}":{
|
||||
"get": {
|
||||
"tags": [
|
||||
"{{tableName}}"
|
||||
],
|
||||
"summary": "query ORM fields values on {{tableName}}",
|
||||
"description": "",
|
||||
"produces": [
|
||||
"application/json"
|
||||
],
|
||||
"parameters": [{
|
||||
"name": "select",
|
||||
"in": "query",
|
||||
"description": "define returned fields of {{tableName}} query, set * to return all fields",
|
||||
"required": true,
|
||||
"type":"string"
|
||||
},{
|
||||
"name": "where",
|
||||
"in": "query",
|
||||
"description": "SELECT-like where condition for {{tableName}} query",
|
||||
"required": false,
|
||||
"type":"string"
|
||||
},{
|
||||
"name": "sort",
|
||||
"in": "query",
|
||||
"description": "order fields for {{tableName}} query",
|
||||
"required": false,
|
||||
"type":"string"
|
||||
}],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "successful operation",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/{{tableName}}"
|
||||
}
|
||||
},
|
||||
"403": {
|
||||
"description": "{{tableName}} not properly accessed",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/__error"
|
||||
}
|
||||
},
|
||||
"404": {
|
||||
"description": "{{tableName}} not found"
|
||||
},
|
||||
"405": {
|
||||
"description": "Unauthorized access to {{tableName}}"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/{{tableName}}/":{
|
||||
"get": {
|
||||
"tags": [
|
||||
"{{tableName}}"
|
||||
],
|
||||
"summary": "retrieve all {{tableName}} ORM ids",
|
||||
"description": "",
|
||||
"produces": [
|
||||
"application/json"
|
||||
],
|
||||
"parameters": [],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "successful operation",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/{{tableName}}"
|
||||
}
|
||||
},
|
||||
"403": {
|
||||
"description": "{{tableName}} not properly accessed",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/__error"
|
||||
}
|
||||
},
|
||||
"404": {
|
||||
"description": "{{tableName}} not found"
|
||||
},
|
||||
"405": {
|
||||
"description": "Unauthorized access to {{tableName}}"
|
||||
}
|
||||
}
|
||||
}
|
||||
, "post": {
|
||||
"tags": [
|
||||
"{{tableName}}"
|
||||
],
|
||||
"summary": "creates a new {{tableName}} ORM record",
|
||||
"description": "",
|
||||
"produces": [
|
||||
"application/json"
|
||||
],
|
||||
"parameters": [{
|
||||
"name": "body",
|
||||
"in": "body",
|
||||
"description": "new {{tableName}} JSON object content",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/{{tableName}}"
|
||||
},
|
||||
"required": true
|
||||
}],
|
||||
"responses": {
|
||||
"201": {
|
||||
"description": "successful operation",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/{{tableName}}"
|
||||
}
|
||||
},
|
||||
"403": {
|
||||
"description": "{{tableName}} not writable or not properly accessed",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/__error"
|
||||
}
|
||||
},
|
||||
"404": {
|
||||
"description": "{{tableName}} not found"
|
||||
},
|
||||
"405": {
|
||||
"description": "Unauthorized access to {{tableName}}"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/{{tableName}}/{id}":{
|
||||
"get": {
|
||||
"tags": [
|
||||
"{{tableName}}"
|
||||
],
|
||||
"summary": "retrieve a {{tableName}} ORM record by id",
|
||||
"description": "",
|
||||
"produces": [
|
||||
"application/json"
|
||||
],
|
||||
"parameters": [{
|
||||
"name": "id",
|
||||
"in": "path",
|
||||
"description": "id to query {{tableName}}",
|
||||
"required": true,
|
||||
"type": "integer",
|
||||
"format":"int64"
|
||||
}],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "successful operation",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/{{tableName}}"
|
||||
}
|
||||
},
|
||||
"403": {
|
||||
"description": "{{tableName}} not properly accessed",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/__error"
|
||||
}
|
||||
},
|
||||
"404": {
|
||||
"description": "{{tableName}} not found"
|
||||
},
|
||||
"405": {
|
||||
"description": "Unauthorized access to {{tableName}}"
|
||||
}
|
||||
}
|
||||
}, "put": {
|
||||
"tags": [
|
||||
"{{tableName}}"
|
||||
],
|
||||
"summary": "change a {{tableName}} ORM record by id",
|
||||
"description": "",
|
||||
"produces": [
|
||||
"application/json"
|
||||
],
|
||||
"parameters": [{
|
||||
"name": "id",
|
||||
"in": "path",
|
||||
"description": "id to update {{tableName}}",
|
||||
"required": true,
|
||||
"type": "integer",
|
||||
"format":"int64"
|
||||
},{
|
||||
"name": "body",
|
||||
"in": "body",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/{{tableName}}"
|
||||
},
|
||||
"description": "modified {{tableName}} JSON object content (partial fields accepted)",
|
||||
"required": true
|
||||
}],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "successful operation",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/{{tableName}}"
|
||||
}
|
||||
},
|
||||
"403": {
|
||||
"description": "{{tableName}} not writable or not properly accessed",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/__error"
|
||||
}
|
||||
},
|
||||
"404": {
|
||||
"description": "{{tableName}} not found"
|
||||
},
|
||||
"405": {
|
||||
"description": "Unauthorized access to {{tableName}}"
|
||||
}
|
||||
}
|
||||
},"delete": {
|
||||
"tags": [
|
||||
"{{tableName}}"
|
||||
],
|
||||
"summary": "remove a {{tableName}} ORM record by id",
|
||||
"description": "",
|
||||
"produces": [
|
||||
"application/json"
|
||||
],
|
||||
"parameters": [{
|
||||
"name": "id",
|
||||
"in": "path",
|
||||
"description": "id to delete {{tableName}}",
|
||||
"required": true,
|
||||
"type": "integer",
|
||||
"format":"int64"
|
||||
}],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "successful operation",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/{{tableName}}"
|
||||
}
|
||||
},
|
||||
"403": {
|
||||
"description": "{{tableName}} not writable or not properly accessed",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/__error"
|
||||
}
|
||||
},
|
||||
"404": {
|
||||
"description": "{{tableName}} not found"
|
||||
},
|
||||
"405": {
|
||||
"description": "Unauthorized access to {{tableName}}"
|
||||
}
|
||||
}
|
||||
}
|
||||
}{{^-last}},{{/-last}}
|
||||
|
||||
{{/orm}}
|
||||
{{#soa}}{{#hasorm}},{{/hasorm}}{{#services}}
|
||||
{{#methods}}
|
||||
"/{{uri}}/{{methodName}}": {
|
||||
"post": {
|
||||
"description": {{jsonQuote methodDescription}},
|
||||
"tags": [
|
||||
"{{uri}}"
|
||||
],
|
||||
"parameters": [{
|
||||
"in": "body",
|
||||
"name": "body",
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"properties": { {{#args}}{{#dirInput}}
|
||||
"{{argName}}": {{>write-type}}{{commaInSingle}}{{/dirInput}}{{/args}}
|
||||
}
|
||||
}
|
||||
}],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "{{uri}}.{{methodName}} executed - check returned content for any application-level error{{^resultAsJSONObjectWithoutResult}}\r\n **Warning: Swagger doesn't support untyped arrays, so isn't able to correctly define the response - please use rather *ResultAsJSONObjectWithoutResult* for a public API**{{/resultAsJSONObjectWithoutResult}}",
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
{{#resultAsJSONObjectWithoutResult}}
|
||||
{{#args}} {{#dirOutput}}
|
||||
"{{argName}}": {{>write-type}}{{#commaOutResult}},{{/commaOutResult}}
|
||||
{{/dirOutput}}{{/args}}
|
||||
{{/resultAsJSONObjectWithoutResult}}
|
||||
{{^resultAsJSONObjectWithoutResult}}
|
||||
"result": {
|
||||
"type": "array",
|
||||
"items": {"type":"string"}
|
||||
}
|
||||
{{/resultAsJSONObjectWithoutResult}}
|
||||
}
|
||||
}
|
||||
},
|
||||
"401": {
|
||||
"description": "{{uri}}.{{methodName}} execution not allowed",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/__error"
|
||||
}
|
||||
},
|
||||
"403": {
|
||||
"description": "{{uri}}.{{methodName}} not properly accessed",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/__error"
|
||||
}
|
||||
},
|
||||
"406": {
|
||||
"description": "{{uri}}.{{methodName}} execution failed - probably due to unexpected input",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/__error"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}{{^-last}},{{/-last}}
|
||||
{{/methods}}{{^-last}},{{/-last}}
|
||||
|
||||
{{/services}}{{/soa}}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user