REST API
REST APIs can be documented using JSON files. You can include these files in the blueprint of the flconfig.json just like the Markdown files.
A REST API documentation JSON file may have the following properties:
- title: The endpoint's title.
- description: The endpoint's description.
- auth: Namespace.
- enabled: A boolean indicating if the endpoint is protected.
- description: The description of the authentication method in place.
- path: The path of the endpoint.
- method: The HTTP method of the endpoint.
- params: An array of route parameter objects.
- name: Parameter name.
- type: Parameter type.
- description: Parameter description.
- queries: An array of query objects.
- name: The name of the query.
- type: The type of the query.
- required: A boolean indicating if the query is required.
- description: The query description.
- request: Namespace.
- headers: An array of request headers.
- name: Header name.
- description: Header description.
- cookies: An array of cookie objects.
- name: The cookie name.
- description: The cookie description.
- body: An array of body objects.
- type: The content type of the body (
application/json,application/xml,multipart/form-data,application/x-www-form-urlencoded,text/plain, etc.) - model: A JSON object for type
application/json, or an array of property objects (similar toqueries) withname,type,required, anddescriptionfields for typesmultipart/form-dataandapplication/x-www-form-urlencoded. For typeapplication/xml, useexternalFileinstead. For any other types (e.g.text/plain), usedescriptioninstead. - externalFile: The path to a model file (either
.jsonor.xml.) Use this if you're not embedding the model or need to provide a XML model. - description: Used for
types that don't need a model.
- type: The content type of the body (
- headers: An array of request headers.
- response: Namespace.
- headers: Same as
request.headers. - cookies: Same as
request.cookies. - body: Same as
request.body.
- headers: Same as
- examples: An array of example objects.
- path: The path of the example endpoint.
- request: Namespace for the example request.
- headers: Key pair value object containing the example request headers.
- cookies: Key pair value object containing the example request cookies.
- body: Namespace for the example request body.
- type: The body content type.
- externalFile: Path to the external body model.
- value: The value of the body (if
externalFileis not used.)
- response: Namespace for the example response.
- status: The status code.
- headers: Key pair value object containing the example response headers.
- cookies: Key pair value object containing the example response cookies.
- body: Namespace for the example response body.
- type: The body content type.
- externalFile: Path to the external body model.
- value: The value of the body (if
externalFileis not used.)
The
externalFilepaths must be relative to theflconfig.jsonregardless of thebasePath.
Example
The following JSON object will be rendered as shown in the REST API Example:
{
"title": "Add a new pet",
"description": "This endpoint adds a new pet in the database.",
"auth": {
"enabled": true,
"description": "Authentication is done using a bearer token obtained from the `/auth/getToken` endpoint."
},
"path": "/pets/add/",
"method": "POST",
"params": [
{ "name": "database", "type": "string", "description": "The database name to add the pet in" }
],
"queries": [
{ "name": "xml", "type": "boolean", "required": false, "description": "If present, the response type would be XML instead of JSON" }
],
"response": {
"headers": [
{ "name": "Content-Type", "description": "The content type of the body" }
],
"cookies": [
{ "name": "trackerid", "description": "The tracker ID" }
],
"body": [
{ "type": "application/json", "model": {
"success": true,
"message": "string"
}},
{ "type": "application/xml", "externalFile": "src/models/response.model.xml" }
]
},
"request": {
"headers": [
{ "name": "Content-Type", "description": "The content type of the body" }
],
"cookies": [
{ "name": "trackerid", "description": "The tracker ID" }
],
"body": [
{ "type": "application/json", "model": {
"name": "The pet name",
"type": "The pet type (dog, bird, etc.)",
"breed": "The pet breed (optional)"
}},
{ "type": "application/xml", "externalFile": "src/models/request.model.xml" },
{ "type": "multipart/form-data", "model": [
{ "key": "name", "type": "string", "required": true, "description": "The pet name" },
{ "key": "type", "type": "string", "required": true, "description": "The pet type (dog, bird, etc.)" },
{ "key": "breed", "type": "string", "required": false, "description": "The pet breed" }
]},
{ "type": "x-www-form-urlencoded", "model": [
{ "key": "name", "type": "string", "required": true, "description": "The pet name" },
{ "key": "type", "type": "string", "required": true, "description": "The pet type (dog, bird, etc.)" },
{ "key": "breed", "type": "string", "required": false, "description": "The pet breed" }
]},
{ "type": "text/plain", "description": "A CSV file with columns 'name', 'type', and 'breed'" }
]
},
"examples": [{
"path": "/pets/add/petsDb?xml=true",
"response": {
"status": 200,
"headers": {
"Content-Type": "application/xml"
},
"cookies": {
"trackerid": "ge8s7ecs69er8vfseasdg0s8d6fgvsdf"
},
"body": {
"type": "application/xml",
"externalFile": "src/models/response.value.xml"
}
},
"request": {
"headers": {
"Content-Type": "application/json"
},
"cookies": {
"trackerid": "ge8s7ecs69er8vfseasdg0s8d6fgvsdf"
},
"body": {
"type": "application/json",
"value": {
"name": "Bob",
"type": "Pig",
"breed": "Miniature Pig"
}
}
}
}]
}