REST API
REST APIs can be documented using JSON/YAML files. You can include these files in the blueprint
of the flconfig.json
just like the Markdown files.
A REST API documentation 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: An object for type
application/json
, or an array of property objects (similar toqueries
) withname
,type
,required
, anddescription
fields for typesmultipart/form-data
andapplication/x-www-form-urlencoded
. For typeapplication/xml
, useexternalFile
instead. For any other types (e.g.text/plain
), usedescription
instead. - externalFile: The path to a model file (either
.json
,.yaml
,.yml
, or.xml
.) Use this if you're not embedding the model or need to provide a XML model. - description: Used for
type
s 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
externalFile
is 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
externalFile
is not used.)
The
externalFile
paths must be relative to theflconfig.json
regardless of thebasePath
.
Example
The following 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"
}
}
}
}]
}
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/type
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