Université de Montréal · API Governance Rules
Université de Montréal API Rules
Spectral linting rules defining API design standards and conventions for Université de Montréal.
15 Rules
error 9
warn 6
Rule Categories
udem
Rules
error
udem-info-title-present
info.title must be present.
$.info
error
udem-info-version-matches-path
info.version must be the SADVR URI version segment (currently 1.8). The version lives in the path, so a contract whose info.version disagrees with its servers[] URL is describing a base that 404s.
$.info
error
udem-operator-declared
Every Université de Montréal contract must declare info.x-operator. A university is a federation of buyers; a spec in this repo with no operator is the misattribution this profile exists to prevent.
$.info
error
udem-operator-is-institution
Only institution-operated contracts belong in openapi/. Tenant and vendor surfaces are recorded as apis[] entries in apis.yml, never as saved specs.
$.info
error
udem-server-on-institution-domain
Every servers[] URL must be under umontreal.ca. The 36 Dataverse specs removed from this repo on 2026-08-30 failed exactly this rule twice over — a vendor product's contract, welded onto a host that does not serve it.
$.servers[*]
error
udem-provenance-block-present
info.x-provenance must record who authored the contract. UdeM publishes no OpenAPI of its own; an unmarked spec here would be credited to the institution as though it did.
$.info
warn
udem-external-docs-present
The contract must link the institution's own documentation page.
$
error
udem-operations-tagged
Every operation must carry at least one tag.
$.paths[*][get,put,post,delete,patch]
error
udem-operation-ids-unique-and-present
Every operation must carry an operationId.
$.paths[*][get,put,post,delete,patch]
error
udem-read-only
SADVR is documented as GET-only. Any non-GET operation appearing in this contract is a fabrication until the institution documents a write path.
$.paths[*]
warn
udem-declares-400
The institution documents 400 as one of its three response codes; operations should declare it.
$.paths[*].get.responses
warn
udem-declares-500
The institution documents 500 as one of its three response codes; operations should declare it.
$.paths[*].get.responses
warn
udem-json-responses
Successful responses must be application/json; SADVR returns nothing else on success.
$.paths[*].get.responses.200.content
warn
udem-path-lowercase
SADVR path segments are lowercase and unpunctuated. `ressource/secteur_recherche`, the one underscored path in UdeM's own example list, is also one of the three that 404s.
$.paths
warn
udem-no-empty-security
A contract that serves personal data anonymously must say so explicitly with `security: []` at the root rather than omitting the field, so the absence of a credential reads as a measured fact and not an oversight.
$
Spectral Ruleset
Work with this as data
Every ruleset here is available over the APIs.io API and to AI agents over MCP.