mirror of
https://github.com/postmanlabs/openapi-to-postman.git
synced 2022-11-29 22:05:00 +03:00
if the option includeWebhooks is false and there are no paths (only webhooks or componentes) throw error.
49 lines
1.4 KiB
JavaScript
49 lines
1.4 KiB
JavaScript
|
|
module.exports = {
|
|
|
|
/**
|
|
* Validate Spec to check if some of the required fields are present.
|
|
* OpenAPI 3.1 only openapi and info are always required,
|
|
* but the document must also contain at least one of paths or webhooks or components.
|
|
* @param {Object} spec OpenAPI spec
|
|
* @param {Object} options computed process options
|
|
* @return {Object} Validation result
|
|
*/
|
|
validateSpec: function (spec, options) {
|
|
const includeWebhooksOption = options.includeWebhooks;
|
|
if (!spec.hasOwnProperty('openapi')) {
|
|
return {
|
|
result: false,
|
|
reason: 'Specification must contain a semantic version number of the OAS specification'
|
|
};
|
|
}
|
|
|
|
if (!spec.hasOwnProperty('info')) {
|
|
return {
|
|
result: false,
|
|
reason: 'Specification must contain an Info Object for the meta-data of the API'
|
|
};
|
|
}
|
|
|
|
if (!spec.hasOwnProperty('paths') && !includeWebhooksOption) {
|
|
return {
|
|
result: false,
|
|
reason: 'Specification must contain Paths Object for the available operational paths'
|
|
};
|
|
}
|
|
|
|
if (includeWebhooksOption && !spec.hasOwnProperty('paths') &&
|
|
!spec.hasOwnProperty('webhooks') && !spec.hasOwnProperty('components')) {
|
|
return {
|
|
result: false,
|
|
reason: 'Specification must contain either Paths, Webhooks or Components sections'
|
|
};
|
|
}
|
|
|
|
return {
|
|
result: true,
|
|
openapi: spec
|
|
};
|
|
}
|
|
};
|