EPFL · API Governance Rules

EPFL API Rules

Spectral linting rules defining API design standards and conventions for EPFL.

5 Rules error 1 warn 3 info 1
View Rules File View on GitHub

Rule Categories

epfl

Rules

warn
epfl-info-contact
API info object should declare a contact for the EPFL API.
$.info
error
epfl-servers-https
EPFL API servers must use HTTPS.
$.servers[*].url
warn
epfl-collection-pagination
EPFL collection (list) endpoints should expose DRF limit/offset pagination parameters.
$.paths[?(@property.match(/\/$/))].get.parameters
warn
epfl-operation-id
Every operation should have an operationId.
$.paths[*][*]
info
epfl-paginated-list-envelope
Paginated list response schemas should follow the DRF envelope with count/next/previous/results.
$.components.schemas[?(@property.match(/^Paginated/))]

Spectral Ruleset

Raw ↑
# generated: 2026-08-19
# method: generated
# source: openapi/_original/epfl-actu.yaml, openapi/_original/epfl-memento.yaml
# x-operator: institution -- rules measured from contracts describing EPFL-operated hosts
#   (actu.epfl.ch, memento.epfl.ch). The rules are ours; the API is EPFL's.
extends: []
formats:
  - oas3
documentationUrl: https://actu.epfl.ch/api-docs/
rules:
  epfl-info-contact:
    description: API info object should declare a contact for the EPFL API.
    severity: warn
    given: $.info
    then:
      field: contact
      function: truthy

  epfl-servers-https:
    description: EPFL API servers must use HTTPS.
    severity: error
    given: $.servers[*].url
    then:
      function: pattern
      functionOptions:
        match: '^https://'

  epfl-collection-pagination:
    description: >-
      EPFL collection (list) endpoints should expose DRF limit/offset
      pagination parameters.
    severity: warn
    given: $.paths[?(@property.match(/\/$/))].get.parameters
    then:
      function: schema
      functionOptions:
        schema:
          type: array
          contains:
            type: object
            properties:
              name:
                enum: [limit, offset]
            required: [name]

  epfl-operation-id:
    description: Every operation should have an operationId.
    severity: warn
    given: $.paths[*][*]
    then:
      field: operationId
      function: truthy

  epfl-paginated-list-envelope:
    description: >-
      Paginated list response schemas should follow the DRF envelope with
      count/next/previous/results.
    severity: info
    given: $.components.schemas[?(@property.match(/^Paginated/))]
    then:
      field: properties
      function: schema
      functionOptions:
        schema:
          type: object
          required: [count, next, previous, results]

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/epfl-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.