SpotDraft · API Governance Rules

SpotDraft API Rules

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

9 Rules error 2 warn 5 info 2
View Rules File View on GitHub

Rule Categories

spotdraft

Rules

warn
spotdraft-info-contact
SpotDraft OpenAPI must include contact info.
$.info
error
spotdraft-summary-required
Every operation must have a summary.
$.paths[*][get,post,put,patch,delete]
warn
spotdraft-summary-title-case
Operation summaries must use Title Case.
$.paths[*][get,post,put,patch,delete].summary
error
spotdraft-tag-required
Every operation must carry at least one tag (used for resource grouping).
$.paths[*][get,post,put,patch,delete]
info
spotdraft-tag-versioned
SpotDraft tags should follow the "V Resource" pattern.
$.tags[*].name
warn
spotdraft-path-public-prefix
Public API paths should be rooted under /api/v/public/.
$.paths
warn
spotdraft-server-regional
At least four regional servers must be declared (IN, US, EU, ME).
$.servers
warn
spotdraft-security-defined
Public API operations should declare a security requirement.
$.paths[*][get,post,put,patch,delete]
info
spotdraft-trailing-slash
SpotDraft uses trailing slashes on collection paths; keep them consistent.
$.paths

Spectral Ruleset

Raw ↑
extends: spectral:oas
formats:
  - oas3
rules:
  spotdraft-info-contact:
    description: SpotDraft OpenAPI must include contact info.
    given: $.info
    severity: warn
    then:
      field: contact
      function: truthy
  spotdraft-summary-required:
    description: Every operation must have a summary.
    given: $.paths[*][get,post,put,patch,delete]
    severity: error
    then:
      field: summary
      function: truthy
  spotdraft-summary-title-case:
    description: Operation summaries must use Title Case.
    given: $.paths[*][get,post,put,patch,delete].summary
    severity: warn
    then:
      function: pattern
      functionOptions:
        match: "^[A-Z]"
  spotdraft-tag-required:
    description: Every operation must carry at least one tag (used for resource grouping).
    given: $.paths[*][get,post,put,patch,delete]
    severity: error
    then:
      field: tags
      function: truthy
  spotdraft-tag-versioned:
    description: SpotDraft tags should follow the "V<n> Resource" pattern.
    given: $.tags[*].name
    severity: info
    then:
      function: pattern
      functionOptions:
        match: "^V[0-9](\\.[0-9])?\\s+.+"
  spotdraft-path-public-prefix:
    description: Public API paths should be rooted under /api/v<n>/public/.
    given: $.paths
    severity: warn
    then:
      field: "@key"
      function: pattern
      functionOptions:
        match: "^/api/v\\d(\\.\\d)?/public/"
  spotdraft-server-regional:
    description: At least four regional servers must be declared (IN, US, EU, ME).
    given: $.servers
    severity: warn
    then:
      function: length
      functionOptions:
        min: 4
  spotdraft-security-defined:
    description: Public API operations should declare a security requirement.
    given: $.paths[*][get,post,put,patch,delete]
    severity: warn
    then:
      field: security
      function: truthy
  spotdraft-trailing-slash:
    description: SpotDraft uses trailing slashes on collection paths; keep them consistent.
    given: $.paths
    severity: info
    then:
      field: "@key"
      function: pattern
      functionOptions:
        match: ".*"