Kontomatik · API Governance Rules

Kontomatik API Rules

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

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

Rule Categories

kontomatik

Rules

error
kontomatik-base-url-versioned
Kontomatik servers should be versioned under /v1.
$.servers[*].url
error
kontomatik-requires-api-key
All operations must require the X-Api-Key security scheme (except /health).
$.paths[?(@property != '/health')].*.security
warn
kontomatik-owner-external-id-required
Operations that operate on owner-scoped data should accept an ownerExternalId parameter.
$.paths[*][get,post]
warn
kontomatik-title-case-summaries
Operation summaries should use Title Case.
$.paths[*][*].summary
warn
kontomatik-operation-id-camel-case
operationId should be lowerCamelCase.
$.paths[*][*].operationId

Spectral Ruleset

Raw ↑
extends: [[spectral:oas, recommended]]
rules:
  kontomatik-base-url-versioned:
    description: Kontomatik servers should be versioned under /v1.
    given: $.servers[*].url
    severity: error
    then:
      function: pattern
      functionOptions:
        match: "/v1/?$"
  kontomatik-requires-api-key:
    description: All operations must require the X-Api-Key security scheme (except /health).
    given: $.paths[?(@property != '/health')].*.security
    severity: error
    then:
      function: truthy
  kontomatik-owner-external-id-required:
    description: Operations that operate on owner-scoped data should accept an ownerExternalId parameter.
    given: $.paths[*][get,post]
    severity: warn
    then:
      function: pattern
      functionOptions:
        match: ownerExternalId
  kontomatik-title-case-summaries:
    description: Operation summaries should use Title Case.
    given: $.paths[*][*].summary
    severity: warn
    then:
      function: pattern
      functionOptions:
        match: "^[A-Z]"
  kontomatik-operation-id-camel-case:
    description: operationId should be lowerCamelCase.
    given: $.paths[*][*].operationId
    severity: warn
    then:
      function: pattern
      functionOptions:
        match: "^[a-z][a-zA-Z0-9]+$"