McGill University · API Governance Rules

McGill University API Rules

Spectral linting rules defining API design standards and conventions for McGill University.

8 Rules error 5 warn 3
View Rules File View on GitHub

Rule Categories

mcgill

Rules

error
mcgill-info-title-present
API document must declare a title.
$.info
error
mcgill-info-version-present
API document must declare a version.
$.info
error
mcgill-operator-declared
Every McGill contract must declare x-operator on info, so a vendor or tenant surface can never be read as institution-operated engineering.
$.info
error
mcgill-server-is-institution-owned
The server URL must be a host under McGill's own registrable domain. A contract based on a vendor host does not belong in this repo.
$.servers[*]
warn
mcgill-operation-id-present
Every operation should carry an operationId.
$.paths[*][get,post,put,delete]
warn
mcgill-operation-tagged
Every operation should be tagged.
$.paths[*][get,post,put,delete]
warn
mcgill-operation-described
Every operation must carry a description; McGill's surfaces have no developer portal behind them, so the contract is the only documentation.
$.paths[*][get,post,put,delete]
error
mcgill-observed-status-documented
Every operation must document at least one response status.
$.paths[*][get,post,put,delete]

Spectral Ruleset

Raw ↑
# McGill University — Spectral ruleset
# generated: '2026-08-30'
# method: generated
# source: openapi/mcgill-shibboleth-idp-openapi.yml
#
# Measured from the ONE institution-operated contract in this repo, the Shibboleth SAML
# identity provider at shibboleth.mcgill.ca. It replaces a ruleset that pinned every server
# URL to https://borealisdata.ca/api — a vendor host shared by six Borealis member
# institutions — and so encoded a vendor's contract as McGill's convention.
extends: [[spectral:oas, off]]
formats: [oas3]
documentationUrl: https://www.mcgill.ca/it/
rules:
  mcgill-info-title-present:
    description: API document must declare a title.
    given: $.info
    severity: error
    then:
      field: title
      function: truthy
  mcgill-info-version-present:
    description: API document must declare a version.
    given: $.info
    severity: error
    then:
      field: version
      function: truthy
  mcgill-operator-declared:
    description: >-
      Every McGill contract must declare x-operator on info, so a vendor or tenant surface can
      never be read as institution-operated engineering.
    given: $.info
    severity: error
    then:
      field: x-operator
      function: truthy
  mcgill-server-is-institution-owned:
    description: >-
      The server URL must be a host under McGill's own registrable domain. A contract based on
      a vendor host does not belong in this repo.
    given: $.servers[*]
    severity: error
    then:
      field: url
      function: pattern
      functionOptions:
        match: "^https://[a-z0-9.-]*mcgill\\.ca(/|$)"
  mcgill-operation-id-present:
    description: Every operation should carry an operationId.
    given: $.paths[*][get,post,put,delete]
    severity: warn
    then:
      field: operationId
      function: truthy
  mcgill-operation-tagged:
    description: Every operation should be tagged.
    given: $.paths[*][get,post,put,delete]
    severity: warn
    then:
      field: tags
      function: truthy
  mcgill-operation-described:
    description: >-
      Every operation must carry a description; McGill's surfaces have no developer portal
      behind them, so the contract is the only documentation.
    given: $.paths[*][get,post,put,delete]
    severity: warn
    then:
      field: description
      function: truthy
  mcgill-observed-status-documented:
    description: Every operation must document at least one response status.
    given: $.paths[*][get,post,put,delete]
    severity: error
    then:
      field: responses
      function: truthy

Work with this as data

Every ruleset here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for spectral rules

4 MCP tools reach this
  • find_rulesBrowse and filter every ruleset in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This ruleset
curl "https://apis.io/api/v1/rules/mcgill-rules"
All spectral rules
curl "https://apis.io/api/v1/rules?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.