87 lines
3.4 KiB
YAML
87 lines
3.4 KiB
YAML
# ---------------------------------------------------------------------------
|
|
# Spectral OpenAPI Guidelines: https://docs.stoplight.io/docs/spectral/4dec24461f3af-open-api-rules
|
|
# ---------------------------------------------------------------------------
|
|
extends: ["spectral:oas"]
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Custom overrides
|
|
# ---------------------------------------------------------------------------
|
|
overrides:
|
|
# types that are not referenced in the swagger spec
|
|
# but are referenced in code (e.g. because parameter enums are not generated as Golang types)
|
|
- files:
|
|
- "swagger.yml#/definitions/orderDir"
|
|
rules:
|
|
oas2-unused-definition: "off"
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Custom rules
|
|
# ---------------------------------------------------------------------------
|
|
rules:
|
|
# ---------------------------------------------------------------------------
|
|
# Rules from the spectral:oas preset, that are not needed
|
|
# ---------------------------------------------------------------------------
|
|
operation-tag-defined: "off"
|
|
oas2-api-host: "off"
|
|
oas2-api-schemes: "off"
|
|
info-contact: "off"
|
|
operation-description: "off"
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Custom AAA Rules
|
|
# ---------------------------------------------------------------------------
|
|
aaa-properties-id-casing:
|
|
description: Properties ending with 'ID' must be cased as 'Id'
|
|
severity: error
|
|
recommended: true
|
|
message: "{{property}} must end with 'Id' instead of 'ID'"
|
|
given: $.definitions..properties[*]~
|
|
then:
|
|
function: pattern
|
|
functionOptions:
|
|
notMatch: "ID$"
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Rules from the Adidas API Guidelines: https://github.com/adidas/api-guidelines/blob/master/.spectral.yml
|
|
# ---------------------------------------------------------------------------
|
|
adidas-path-parameters-camelCase-alphanumeric:
|
|
description: Path parameters MUST follow camelCase
|
|
severity: warn
|
|
recommended: true
|
|
message: "{{property}} path parameter is not camelCase: {{error}}"
|
|
given: $..parameters[?(@.in == 'path')].name
|
|
then:
|
|
function: pattern
|
|
functionOptions:
|
|
match: "^[a-z][a-zA-Z0-9]+$"
|
|
|
|
adidas-definitions-camelCase-alphanumeric:
|
|
description: All YAML/JSON definitions MUST follow fields-camelCase and be ASCII alphanumeric characters or `_` or `$`.
|
|
severity: error
|
|
recommended: true
|
|
message: "{{property}} MUST follow camelCase and be ASCII alphanumeric characters or `_` or `$`."
|
|
given: $.definitions[*]~
|
|
then:
|
|
function: pattern
|
|
functionOptions:
|
|
match: "/^[a-z$_]{1}[A-Z09$_]*/"
|
|
|
|
adidas-properties-camelCase-alphanumeric:
|
|
description: All JSON Schema properties MUST follow fields-camelCase and be ASCII alphanumeric characters or _ or $.
|
|
severity: error
|
|
recommended: true
|
|
message: "{{property}} MUST follow camelCase and be ASCII alphanumeric characters or _ or $."
|
|
given: $.definitions..properties[*]~
|
|
then:
|
|
function: pattern
|
|
functionOptions:
|
|
match: "/^[a-z$]{1}[A-Z09$]*/"
|
|
|
|
adidas-request-GET-no-body:
|
|
description: "A 'GET' request MUST NOT accept a 'body` parameter"
|
|
severity: error
|
|
given: $.paths..get.parameters..in
|
|
then:
|
|
function: pattern
|
|
functionOptions:
|
|
notMatch: "/^body$/" |