Sonetel · API Governance Rules

Sonetel API Rules

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

11 Rules error 6
Published by Sonetel Served by the provider at https://github.com/Sonetel/sonetel-api-docs/blob/fb88f324a5a3acaae635bc61020de53e634de9c0/reference/.spectral.yaml; the copy below was fetched from there.
View Rules File View on GitHub

Rule Categories

2xx bearer enum info operation path schema

Rules

error
info-contact-present
Contact information (name & email) must be provided in the API info object
$.info
error
path-lowercase
All path segments must be lowercase; use hyphens to separate words. Path parameters are exempt.
$.paths.*~
warning
path-parameter-naming
Path parameter names should be lowercase and end with 'id'
$.paths.*.*.parameters[?(@.in=='path')].name
error
operation-summary
Each operation must have a non‑empty summary.
$.paths.*.*
error
operation-description
Each operation must have a description.
$.paths.*.*
warning
operation-id-kebab-case
operationId should be kebab‑case verb‑noun (e.g., get-user).
$.paths.*.*.operationId
error
2xx-response-description
2xx responses must have a description.
$.paths.*.*.responses[?(/^2[0-9]{2}$/.test(@property))]
warning
bearer-auth-header
Operations that require Authorization header must document it.
$.paths.*.*
error
schema-property-snake-case
Schema property names must be snake_case.
$..properties.*~
warning
schema-property-description
All schema properties must have a description.
$..properties.*
warning
enum-values-lowercase
Enum values must be lowercase.
$..enum[*]

Spectral Ruleset

Raw ↑
# harvested from https://github.com/Sonetel/sonetel-api-docs/blob/fb88f324a5a3acaae635bc61020de53e634de9c0/reference/.spectral.yaml on 2026-10-09 — a Spectral ruleset published in the provider's own GitHub repository (Sonetel/sonetel-api-docs); found by GitHub code search, fetched verbatim
x-method: harvested
x-stamped: 2026-10-09
x-source-url: https://github.com/Sonetel/sonetel-api-docs/blob/fb88f324a5a3acaae635bc61020de53e634de9c0/reference/.spectral.yaml
extends:
- spectral:oas
formats:
- oas3
rules:
  info-contact-present:
    description: Contact information (name & email) must be provided in the API info
      object
    message: info.contact.name and info.contact.email are required
    given: $.info
    severity: error
    then:
    - field: contact.name
      function: truthy
    - field: contact.email
      function: truthy
  path-lowercase:
    description: All path segments must be lowercase; use hyphens to separate words.
      Path parameters are exempt.
    message: Path '{{value}}' should be lowercase and use hyphens (e.g. /resource-name)
    given: $.paths.*~
    severity: error
    then:
      function: pattern
      functionOptions:
        match: ^(/[a-z0-9\-{}]+)+$
  path-parameter-naming:
    description: Path parameter names should be lowercase and end with 'id'
    message: Path parameter '{{value}}' should be lowercase and end with 'id'
    given: $.paths.*.*.parameters[?(@.in=='path')].name
    severity: warning
    then:
      function: pattern
      functionOptions:
        match: ^[a-z0-9]+id$
  operation-summary:
    description: "Each operation must have a non\u2011empty summary."
    message: Operation is missing a summary.
    given: $.paths.*.*
    severity: error
    then:
      field: summary
      function: truthy
  operation-description:
    description: Each operation must have a description.
    message: Operation is missing a description.
    given: $.paths.*.*
    severity: error
    then:
      field: description
      function: truthy
  operation-id-kebab-case:
    description: "operationId should be kebab\u2011case verb\u2011noun (e.g., get-user)."
    message: "operationId '{{value}}' should be kebab\u2011case verb\u2011noun (e.g.,\
      \ get-user)."
    given: $.paths.*.*.operationId
    severity: warning
    then:
      function: pattern
      functionOptions:
        match: ^[a-z]+(-[a-z]+)+$
  2xx-response-description:
    description: 2xx responses must have a description.
    message: Response {{property}} is missing description.
    given: $.paths.*.*.responses[?(/^2[0-9]{2}$/.test(@property))]
    severity: error
    then:
      field: description
      function: truthy
  bearer-auth-header:
    description: Operations that require Authorization header must document it.
    message: Operation is missing 'Authorization' header parameter.
    given: $.paths.*.*
    severity: warning
    then:
      function: schema
      functionOptions:
        schema:
          type: object
          required:
          - parameters
          properties:
            parameters:
              type: array
              contains:
                type: object
                required:
                - name
                - in
                properties:
                  name:
                    enum:
                    - Authorization
                  in:
                    enum:
                    - header
  schema-property-snake-case:
    description: Schema property names must be snake_case.
    message: Property '{{property}}' is not snake_case.
    given: $..properties.*~
    severity: error
    then:
      function: pattern
      functionOptions:
        match: ^[a-z]+(_[a-z0-9]+)*$
  schema-property-description:
    description: All schema properties must have a description.
    message: Property {{property}} is missing a description.
    given: $..properties.*
    severity: warning
    then:
      field: description
      function: truthy
  enum-values-lowercase:
    description: Enum values must be lowercase.
    message: Enum value '{{value}}' should be lowercase.
    given: $..enum[*]
    severity: warning
    then:
      function: pattern
      functionOptions:
        match: ^[a-z0-9_\-]+$

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/sonetel-sonetel-api-docs-spectral-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.