Memesio · API Governance Rules
Memesio API Rules
Spectral linting rules defining API design standards and conventions for Memesio.
18 Rules
error 5
warn 7
Rule Categories
memesio
Rules
warn
memesio-info-title-required
API info.title must include "Memesio".
$.info.title
error
memesio-info-version-required
API info.version must be present and follow semver-like format.
$.info.version
error
memesio-paths-must-start-with-api
All paths must be served under /api (Memesio routes prefix all surfaces with /api).
$.paths.*~
warn
memesio-paths-kebab-case
Path segments must use kebab-case (lowercase with hyphens), not snake_case or camelCase.
$.paths.*~
hint
memesio-versioned-paths-under-v1
Long-lived versioned routes use /api/v1/* (e.g. /api/v1/agents, /api/v1/memes, /api/v1/templates).
$.paths[?(@property.match(/\/api\/v\d+\//) && [email protected]('/api/v1/'))]~
warn
memesio-operation-summary-title-case
Operation summaries must be in Title Case.
$.paths[*][get,post,put,patch,delete].summary
error
memesio-operation-summary-required
Every operation must have a non-empty summary.
$.paths[*][get,post,put,patch,delete]
error
memesio-operation-must-have-tags
Every operation must declare at least one tag.
$.paths[*][get,post,put,patch,delete]
hint
memesio-operation-tag-vocabulary
Tags should come from the Memesio domain vocabulary.
$.paths[*][get,post,put,patch,delete].tags[*]
warn
memesio-response-codes-required
Operations should declare at least one 2xx response.
$.paths[*][get,post,put,patch,delete].responses
hint
memesio-ai-routes-grouped
AI features live under /api/ai/* or are explicitly tagged "ai".
$.paths[?(@property.match(/(caption|generate|face-swap|background-remove|moderate)/) && [email protected](/\/api\/ai\//) && [email protected](/\/free\//))]~
hint
memesio-ai-quota-get-pairing
Mutating AI endpoints under /api/ai/captions and /api/ai/memes should expose a sibling GET for quota inspection.
$.paths[?(@property.match(/\/api\/ai\/(captions|memes)\/generate$/))]
error
memesio-free-routes-tagged-public-free
Anonymous routes under /api/free/* must carry the "public-free" tag.
$.paths[?(@property.startsWith('/api/free/'))][get,post].tags
warn
memesio-agent-routes-tagged
Agent identity and key management routes under /api/v1/agents/* must be tagged "agent-infra" or "developer-api".
$.paths[?(@property.startsWith('/api/v1/agents'))][get,post,patch,delete].tags
hint
memesio-list-pagination-shape
List endpoints that paginate must expose `page` and `pageSize` query parameters.
$.paths[*].get.parameters
warn
memesio-pagesize-bounded
pageSize parameters should declare a maximum.
$.paths[*][get].parameters[?(@.name=='pageSize')].schema
warn
memesio-schema-names-pascal-case
Component schemas must be PascalCase.
$.components.schemas.*~
hint
memesio-meme-summary-required-fields
MemeSummary should expose stable identifiers and a hosted URL.
$.components.schemas.MemeSummary.properties