BrewPage · API Governance Rules
BrewPage API Rules
Spectral linting rules defining API design standards and conventions for BrewPage.
21 Rules
error 4
warn 14
info 3
Rule Categories
brewpage
Rules
warn
brewpage-info-title-prefix
All BrewPage OpenAPI titles SHOULD start with "BrewPage ".
$.info.title
error
brewpage-server-https
All BrewPage API servers MUST use HTTPS.
$.servers[*].url
warn
brewpage-server-host
BrewPage servers SHOULD be brewpage.app or brewdata.app.
$.servers[*].url
warn
brewpage-base-path-api
BrewPage REST endpoints SHOULD live under /api/, /preview/, /preview-html/, or be public short-link paths (/{ns}/{id}).
$.paths[*]~
error
brewpage-operation-id-required
Operations MUST have an operationId.
$.paths[*][get,post,put,delete,patch]
warn
brewpage-operation-id-camel-case
operationId SHOULD be camelCase.
$.paths[*][get,post,put,delete,patch].operationId
error
brewpage-summary-required
Operations MUST have a summary.
$.paths[*][get,post,put,delete,patch]
warn
brewpage-summary-prefix
Operation summaries SHOULD begin with "BrewPage ".
$.paths[*][get,post,put,delete,patch].summary
warn
brewpage-summary-title-case
Operation summaries SHOULD start with a capital letter (Title Case).
$.paths[*][get,post,put,delete,patch].summary
warn
brewpage-description-required
Operations SHOULD have a description.
$.paths[*][get,post,put,delete,patch]
warn
brewpage-tags-required
Operations MUST be tagged with at least one tag.
$.paths[*][get,post,put,delete,patch].tags
warn
brewpage-namespace-pattern
BrewPage `ns` path parameters SHOULD enforce the kebab-case 1..32 char pattern.
$.paths.*.*.parameters[?(@.name=='ns' && @.in=='path')].schema
warn
brewpage-camel-case-properties
BrewPage schema properties SHOULD use camelCase (matches API payloads like ownerToken, ownerLink, ttlDays).
$.components.schemas[*].properties[*]~
warn
brewpage-tag-title-case
Tags SHOULD use Title Case names.
$.tags[*].name
warn
brewpage-tag-description
Tags SHOULD have a description.
$.tags[*]
info
brewpage-user-agent-header
BrewPage requires a User-Agent header — operations SHOULD declare the parameter or describe it.
$.paths[*][get,post,put,delete,patch]
warn
brewpage-owner-token-header-name
Mutations SHOULD authenticate via the `X-Owner-Token` header (not query string or body).
$.paths[*][put,delete].parameters[?(@.in=='header')].name
error
brewpage-success-response
Operations MUST define a 2xx response.
$.paths[*][get,post,put,delete,patch].responses
warn
brewpage-error-responses
Mutating operations SHOULD document 403 (wrong owner token) and 404 responses.
$.paths[*][put,delete].responses
info
brewpage-ttl-bounds
TTL parameters SHOULD bound 1..30 days to match BrewPage's published retention window.
$.paths[*][post].parameters[?(@.name=='ttl' || @.name=='ttl_days')]
info
brewpage-short-id-length
BrewPage short ids are 10-char base32-like strings — descriptions SHOULD note this where the `id` path parameter appears.
$.paths.*.*.parameters[?(@.name=='id' && @.in=='path')]