University of Twente · API Governance Rules
University of Twente API Rules
Spectral linting rules defining API design standards and conventions for University of Twente.
11 Rules
error 1
warn 6
info 4
Rule Categories
info
operation
parameter
property
response
root
schema
Rules
warn
operation-has-summary
Every operation should carry a summary. This API does, on all three.
$.paths[*][get,post,put,patch,delete]
warn
operation-has-tags
Every operation should be tagged. This API tags all three (Dashboard, Energy).
$.paths[*][get,post,put,patch,delete]
warn
response-has-description
Every declared response should describe what it means. This API describes all eight.
$.paths[*][*].responses[*]
info
operation-declares-503
Every operation should declare 503 for the metering database being unreachable. This is the API's own convention — all three operations declare it — and it is worth holding onto.
$.paths[*][get]
warn
property-name-casing
Schema property names are camelCase throughout (27/27). Keep them that way.
$.components.schemas[*].properties[*]~
info
schema-closed
Component schemas should set additionalProperties false. Eight of nine do; ProblemDetails is the exception and it is the schema this API does not actually return.
$.components.schemas[*]
warn
operation-has-operationid
GAP. No operation declares an operationId, so no generated client can name a method and no agent can address an operation by identifier. Three identifiers would close this.
$.paths[*][get,post,put,patch,delete]
warn
parameter-has-description
GAP. Five of seven parameters are described; `corrected` and `co2` carry empty descriptions even though both change the meaning of every returned value.
$.paths[*][*].parameters[*]
error
root-declares-servers
GAP. The document declares no servers[]. The base URL is recoverable only from the fact that the document happens to be served from energyapi.utwente.nl — the contract itself does not say where the API lives, which is the single defect most likely to break a machine consumer.
$
info
root-declares-tags
GAP. Operations are tagged but the root tags[] array is absent, so the two tag names carry no descriptions.
$
info
info-contact-is-institutional
GAP, recorded rather than machine-checkable. info.contact names Realised, the contracted developer (energydata@realised.nl), not the university. The university's own published contact for this platform is sustainability@utwente.nl. A consumer reading the contract is routed away from the operator.
$.info
Spectral Ruleset
Work with this as data
Every ruleset here is available over the APIs.io API and to AI agents over MCP.