2021-09-02 11:25:24 +02:00
|
|
|
'use strict';
|
|
|
|
|
2022-03-17 16:54:37 +01:00
|
|
|
const pascalCase = require('./pascal-case');
|
|
|
|
|
2021-09-02 11:25:24 +02:00
|
|
|
/**
|
|
|
|
* @description - Builds the Swagger response object for a given api
|
|
|
|
*
|
|
|
|
* @param {object} attributes - The attributes found on a contentType
|
|
|
|
* @param {object} route - The current route
|
|
|
|
* @param {boolean} isListOfEntities - Checks for a list of entitities
|
|
|
|
*
|
|
|
|
* @returns The Swagger responses
|
|
|
|
*/
|
2022-04-05 10:57:35 +02:00
|
|
|
const getApiResponse = (name, route, isListOfEntities = false) => {
|
|
|
|
const getSchema = () => {
|
|
|
|
if (route.method === 'DELETE') {
|
|
|
|
return {
|
|
|
|
type: 'integer',
|
|
|
|
format: 'int64',
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
if (isListOfEntities) {
|
|
|
|
return { $ref: `#/components/schemas/${pascalCase(name)}ListResponse` };
|
|
|
|
}
|
|
|
|
|
|
|
|
return { $ref: `#/components/schemas/${pascalCase(name)}Response` };
|
|
|
|
};
|
|
|
|
|
|
|
|
const schema = getSchema();
|
2021-09-02 11:25:24 +02:00
|
|
|
|
|
|
|
return {
|
|
|
|
responses: {
|
|
|
|
'200': {
|
2022-02-10 17:16:29 +01:00
|
|
|
description: 'OK',
|
2021-09-02 11:25:24 +02:00
|
|
|
content: {
|
|
|
|
'application/json': {
|
|
|
|
schema,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
2021-10-19 09:39:10 +02:00
|
|
|
'400': {
|
|
|
|
description: 'Bad Request',
|
|
|
|
content: {
|
|
|
|
'application/json': {
|
2022-03-17 16:54:37 +01:00
|
|
|
schema: {
|
|
|
|
$ref: '#/components/schemas/Error',
|
|
|
|
},
|
2021-10-19 09:39:10 +02:00
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
'401': {
|
|
|
|
description: 'Unauthorized',
|
|
|
|
content: {
|
|
|
|
'application/json': {
|
2022-03-17 16:54:37 +01:00
|
|
|
schema: {
|
|
|
|
$ref: '#/components/schemas/Error',
|
|
|
|
},
|
2021-10-19 09:39:10 +02:00
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
2021-09-02 11:25:24 +02:00
|
|
|
'403': {
|
|
|
|
description: 'Forbidden',
|
|
|
|
content: {
|
|
|
|
'application/json': {
|
2022-03-17 16:54:37 +01:00
|
|
|
schema: {
|
|
|
|
$ref: '#/components/schemas/Error',
|
|
|
|
},
|
2021-09-02 11:25:24 +02:00
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
'404': {
|
2021-10-19 09:39:10 +02:00
|
|
|
description: 'Not Found',
|
|
|
|
content: {
|
|
|
|
'application/json': {
|
2022-03-17 16:54:37 +01:00
|
|
|
schema: {
|
|
|
|
$ref: '#/components/schemas/Error',
|
|
|
|
},
|
2021-10-19 09:39:10 +02:00
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
'500': {
|
|
|
|
description: 'Internal Server Error',
|
2021-09-02 11:25:24 +02:00
|
|
|
content: {
|
|
|
|
'application/json': {
|
2022-03-17 16:54:37 +01:00
|
|
|
schema: {
|
|
|
|
$ref: '#/components/schemas/Error',
|
|
|
|
},
|
2021-09-02 11:25:24 +02:00
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
};
|
|
|
|
};
|
2022-04-05 10:57:35 +02:00
|
|
|
|
|
|
|
module.exports = getApiResponse;
|