Purdue University · API Governance Rules
Purdue University API Rules
Spectral linting rules defining API design standards and conventions for Purdue University.
8 Rules
error 1
warn 3
info 4
Rule Categories
purdue
Rules
warn
purdue-info-contact-present
Every Purdue contract should name a contact. Observed gap - the RCAC OpenAPI at www.rcac.purdue.edu/api ships info.title "RCAC API" and version 0.0.1 with no contact block, so a consumer who hits the auth wall has nowhere to go.
$.info
warn
purdue-info-description-present
Observed gap - the RCAC OpenAPI has no info.description at all across 206 paths.
$.info
info
purdue-info-license-present
Neither Purdue contract declares a license for the description document itself.
$.info
error
purdue-server-is-purdue-host
A contract saved under this institution must be served from a purdue.edu host. This is the operator rule that keeps a vendor's or a third party's contract out of the Purdue profile.
$.servers[*].url
warn
purdue-operations-are-tagged
Observed gap - all 452 RCAC operations are untagged, so the contract cannot be split, navigated or grouped by resource.
$.paths[*][get,put,post,delete,patch]
info
purdue-operation-has-description
$.paths[*][get,put,post,delete,patch]
info
purdue-security-scheme-declared
An auth-gated Purdue API must declare how it is authenticated. RCAC does this correctly with an api_token apiKey scheme; the HFS menus API is genuinely keyless and declares none.
$
info
purdue-no-500-as-auth-challenge
Observed gap, recorded as documentation rather than lint - both Purdue APIs answer an unauthenticated or invalid request with 500 (RCAC returns an HTML login page; HFS returns an ASP.NET stack trace for an unknown location). A contract should declare 401 and 404 where they belong.
$.paths[*][get,put,post,delete,patch].responses
Spectral Ruleset
Work with this as data
Every ruleset here is available over the APIs.io API and to AI agents over MCP.