extends: spectral:oas formats: - oas3 rules: outbrain-title-case-summaries: description: All operation summaries must be Title Case. given: $.paths[*][get,post,put,delete,patch].summary severity: warn then: function: pattern functionOptions: match: '^([A-Z][a-z0-9]*)( [A-Z][a-z0-9]*)*$' outbrain-operation-ids-camel-case: description: operationId must be camelCase. given: $.paths[*][*].operationId severity: error then: function: pattern functionOptions: match: '^[a-z][a-zA-Z0-9]*$' outbrain-ob-token-header: description: Authenticated paths must declare the OB-TOKEN-V1 security scheme. given: $.components.securitySchemes.OBTokenAuth severity: error then: field: name function: pattern functionOptions: match: '^OB-TOKEN-V1$' outbrain-base-url-versioning: description: Production server URL should embed a version (amplify/v0.1). given: $.servers[0].url severity: warn then: function: pattern functionOptions: match: 'v[0-9]+\\.[0-9]+|v[0-9]+'