University of Oxford · API Governance Rules
University of Oxford API Rules
Spectral linting rules defining API design standards and conventions for University of Oxford.
19 Rules
error 17
warn 2
Rule Categories
oxford
Rules
error
oxford-operator-declared
Every OpenAPI in this repository must declare info.x-operator. A university is a federation of buyers; without an explicit operator an artifact silently credits the institution for whatever it describes.
$.info
error
oxford-operator-is-institution
Only institution-operated contracts are saved under this slug. A tenant relationship is recorded in apis.yml as an apis[] entry, never as a saved contract; a vendor's generic contract belongs in the vendor's own repository.
$.info.x-operator
error
oxford-operator-evidence-required
The operator claim must carry the evidence that settles it — a registrable domain, a DNS resolution, or a self-reported origin host in the API's own response.
$.info
error
oxford-provenance-block-required
Every document must state how API Evangelist came to hold it. An unmarked artifact is credited to the institution as if they published it.
$.info
error
oxford-provenance-method-controlled
Provenance method must come from the controlled vocabulary.
$.info.x-provenance
error
oxford-provenance-source-required
The provenance source must name the URLs the document was derived from.
$.info.x-provenance
error
oxford-no-vendor-servers
No server in an Oxford-attributed contract may point at a shared vendor platform. This is the check that would have caught the June 2026 cohort's Figshare misattribution.
$.servers[*].url
error
oxford-servers-on-institution-domain
Every server must sit under a University of Oxford registrable domain. Oxford's surfaces live on ox.ac.uk and its subdomains; anything else is somebody else's engineering.
$.servers[*].url
error
oxford-no-placeholder-servers
Placeholder, staging and localhost hosts are never a surface.
$.servers[*].url
error
oxford-info-contact-required
Oxford's endpoints self-report real administrative contacts (ora-dev@bodleian.ox.ac.uk, ota@bodleian.ox.ac.uk). Carry them.
$.info
error
oxford-info-description-substantive
Descriptions must be substantive enough to state what the surface is and whether Oxford documents it.
$.info
error
oxford-info-version-required
$.info
error
oxford-operation-id-required
$.paths[*][get,post,put,patch,delete]
warn
oxford-operation-id-camel-case
$.paths[*][get,post,put,patch,delete].operationId
error
oxford-operation-tagged
Every operation carries exactly the tags of its own surface. Tag hygiene matters here for a specific reason: refine-openapis splits by tag, and the June 2026 cohort turned one vendor contract into eleven apparent APIs that way.
$.paths[*][get,post,put,patch,delete]
warn
oxford-operation-summary-required
$.paths[*][get,post,put,patch,delete]
error
oxford-operation-has-200
$.paths[*][get,post,put,patch,delete].responses
error
oxford-no-invented-security
No Oxford institution-operated surface authenticates. A security scheme appearing in one of these documents would be an invention, not a finding.
$.components
error
oxford-no-global-security
$