I am using swagger-autogen to generate API documentation from Joi validations in my Express.js. I have this validation
const createCategoryBodySchema = Joi.object().keys({
parentId: Joi.number().positive().max(DB_INTEGER_MAX_VALUE).integer(),
name: Joi.string().regex(checkAlphanumericLineSpaceCommaDot).message(COMMON_ERROR_MESSAGES.nameValidation).required()
})
const { swagger: createCategoryBodySwagger } = j2s(createCategoryBodySchema);
I also added it to @definitions in swaggerAutogen docs
And I used this fake route to generate doc for this endpoint
/*
#swagger.start
#swagger.tags = ['Categories']
#swagger.path = '/api/v1/categories/'
#swagger.method = 'get'
#swagger.summary = 'Get Categories'
#swagger.responses[200]
#swagger.responses[404]
#swagger.end
*/
Now to avoid writing query parameters I need to reference createCategoryBodySwagger in this fake endpoint. Can anyone help me to reference correctly?
From swagger-autogen documantation example
app.post('/path', (req, res) => {
...
/* #swagger.parameters['body'] = {
in: 'body',
description: 'Add a user',
schema: { $ref: '#/definitions/someDefinition' }
} */
...
});
I have changed body to query, which didn't work
/*
#swagger.start
#swagger.tags = ['Categories']
#swagger.path = '/api/v1/categories/'
#swagger.method = 'get'
#swagger.summary = 'Get Categories'
#swagger.parameters['query'] = {
in: 'query',
description: 'Add a user',
schema: {
$ref: '#/definitions/updateCategoryBodySwagger'
}
}
#swagger.responses[200]
#swagger.responses[404]
#swagger.end
*/
referencing like this. I also checked this question in stackoverflow but it reference in requestBody not in query
I just had to remove line
in: 'query',from}