extends: spectral:oas rules: seatgeek-operation-ids-camel-case: description: Operation IDs must use camelCase severity: warn given: "$.paths[*][*].operationId" then: function: pattern functionOptions: match: "^[a-z][a-zA-Z0-9]*$" seatgeek-tags-required: description: All operations must have at least one tag severity: error given: "$.paths[*][*]" then: field: tags function: truthy seatgeek-summaries-title-case: description: Operation summaries must use Title Case severity: warn given: "$.paths[*][*].summary" then: function: pattern functionOptions: match: "^[A-Z][a-zA-Z0-9]*(\\s[A-Z][a-zA-Z0-9]*)*$" seatgeek-pagination-parameters: description: Collection endpoints should support per_page and page parameters severity: warn given: "$.paths[*][get]" then: field: parameters function: truthy seatgeek-get-only-read-api: description: Platform API is read-only and should only use GET methods severity: info given: "$.paths[*]" then: function: pattern functionOptions: notMatch: "^(post|put|patch|delete)$" seatgeek-response-meta: description: Collection responses should include meta pagination object severity: info given: "$.paths[*][get].responses['200'].content['application/json'].schema.properties" then: field: meta function: truthy seatgeek-client-id-security: description: All endpoints require client_id authentication severity: error given: "$.paths[*][*]" then: field: security function: truthy seatgeek-path-plural-nouns: description: Collection paths should use plural nouns severity: warn given: "$.paths" then: function: pattern functionOptions: match: "^/(events|performers|venues|taxonomies|recommendations)"