extends: spectral:oas rules: squillo-operation-summary-title-case: description: All operation summaries must use Title Case severity: warn given: "$.paths[*][*].summary" then: function: pattern functionOptions: match: "^([A-Z][a-z0-9]*\\s?)+$" squillo-operationid-camel-case: description: operationId must use camelCase severity: warn given: "$.paths[*][*].operationId" then: function: pattern functionOptions: match: "^[a-z][a-zA-Z0-9]*$" squillo-tags-required: description: Every operation must have at least one tag severity: error given: "$.paths[*][*]" then: field: tags function: truthy squillo-description-required: description: All operations must have a description severity: warn given: "$.paths[*][*].description" then: function: truthy squillo-response-200-or-201-required: description: All operations must define a success response severity: error given: "$.paths[*][*].responses" then: function: schema functionOptions: schema: anyOf: - required: ['200'] - required: ['201'] - required: ['202'] - required: ['204'] squillo-paths-use-kebab-case: description: Path segments should use kebab-case severity: warn given: "$.paths" then: function: pattern functionOptions: match: "^(\\/[a-z0-9{}\\-]*)+$" squillo-no-inline-schemas-in-responses: description: Response schemas should use $ref severity: hint given: "$.paths[*][*].responses[*].content[*].schema" then: function: schema functionOptions: schema: required: ['$ref']