Archer Daniels Midland API Rules
Spectral linting rules defining API design standards and conventions for Archer Daniels Midland.
21 Rules
error 10
warn 11
Rule Categories
error
get
info
no
openapi
operation
operationid
parameter
query
response
schema
security
servers
Rules
error
info-title-adm-prefix
API title must start with "Archer Daniels Midland"
$.info
warn
info-description-required
API must have a description
$.info
error
openapi-version-3
Use OpenAPI 3.0.x
$
error
servers-defined
Server URLs must be defined
$
error
servers-https
Server URLs must use HTTPS
$.servers[*]
error
operation-id-required
All operations must have an operationId
$.paths[*][get,post,put,delete,patch]
error
operation-summary-required
All operations must have a summary
$.paths[*][get,post,put,delete,patch]
warn
operation-summary-prefix
Operation summaries should start with "Archer Daniels Midland"
$.paths[*][get,post,put,delete,patch]
error
operation-tags-required
All operations must have at least one tag
$.paths[*][get,post,put,delete,patch]
warn
parameter-description-required
All parameters must have a description
$.paths[*][*].parameters[*]
error
response-success-required
All operations must define a success response
$.paths[*][get,post,put,delete,patch].responses
error
security-schemes-defined
Security schemes must be defined
$.components
error
get-no-request-body
GET operations must not have a request body
$.paths[*].get
warn
servers-expected-domain
Server URLs should be on the adm.com domain.
$.servers[*].url
warn
query-params-casing
Query parameters should be snake_case (the dominant convention in this API).
$.paths[*][get,post,put,patch,delete].parameters[?(@.in=='query')]
warn
operationid-casing
Operation IDs should be camelCase (the dominant convention in this API).
$.paths[*][get,post,put,patch,delete].operationId
warn
schema-names-casing
Component schema names should be PascalCase (the dominant convention in this API).
$.components.schemas
warn
schema-properties-casing
Schema properties should be snake_case (the dominant convention in this API).
$.components.schemas[*].properties
warn
error-schema-defined
A shared error schema (ErrorResponse) should be defined for error payloads.
$.components.schemas
warn
operation-documents-401
Operations should document a 401 response (documented on 100% of this API's operations).
$.paths[*][get,post,put,patch,delete].responses
warn
no-empty-descriptions
Descriptions must not be empty strings.
$..description
Spectral Ruleset
# archer-daniels-midland — Spectral ruleset (strengthened)
# Plain Spectral. Existing hand-authored rules preserved; measured rules added
# from this provider's own OpenAPI conventions by strengthen_ruleset.py,
# then self-validated against the spec.
#
# Provenance:
# - servers-https-only: 100% of servers already https (error)
# - servers-expected-domain: 1/1 servers on adm.com
# - query-params-casing: snake @ 100% (n=6)
# - operationid-casing: camel @ 100% (n=4)
# - schema-names-casing: pascal @ 100% (n=8)
# - schema-properties-casing: snake @ 93% (n=29)
# - security: global (root) — NOT emitting operation-security-required
# - error-schema-defined: ErrorResponse
# - operation-documents-401: 100% adherence
# - merge: kept 13 existing, added 8 measured, upgraded 0
# - added: servers-expected-domain, query-params-casing, operationid-casing, schema-names-casing, schema-properties-casing, error-schema-defined, operation-documents-401, no-empty-descriptions
extends:
- spectral:oas
rules:
info-title-adm-prefix:
description: API title must start with "Archer Daniels Midland"
severity: error
given: $.info
then:
field: title
function: pattern
functionOptions:
match: ^Archer Daniels Midland
info-description-required:
description: API must have a description
severity: warn
given: $.info
then:
field: description
function: truthy
openapi-version-3:
description: Use OpenAPI 3.0.x
severity: error
given: $
then:
field: openapi
function: pattern
functionOptions:
match: ^3\.0\.
servers-defined:
description: Server URLs must be defined
severity: error
given: $
then:
field: servers
function: truthy
servers-https:
description: Server URLs must use HTTPS
severity: error
given: $.servers[*]
then:
field: url
function: pattern
functionOptions:
match: ^https://
operation-id-required:
description: All operations must have an operationId
severity: error
given: $.paths[*][get,post,put,delete,patch]
then:
field: operationId
function: truthy
operation-summary-required:
description: All operations must have a summary
severity: error
given: $.paths[*][get,post,put,delete,patch]
then:
field: summary
function: truthy
operation-summary-prefix:
description: Operation summaries should start with "Archer Daniels Midland"
severity: warn
given: $.paths[*][get,post,put,delete,patch]
then:
field: summary
function: pattern
functionOptions:
match: ^Archer Daniels Midland
operation-tags-required:
description: All operations must have at least one tag
severity: error
given: $.paths[*][get,post,put,delete,patch]
then:
field: tags
function: truthy
parameter-description-required:
description: All parameters must have a description
severity: warn
given: $.paths[*][*].parameters[*]
then:
field: description
function: truthy
response-success-required:
description: All operations must define a success response
severity: error
given: $.paths[*][get,post,put,delete,patch].responses
then:
function: truthy
security-schemes-defined:
description: Security schemes must be defined
severity: error
given: $.components
then:
field: securitySchemes
function: truthy
get-no-request-body:
description: GET operations must not have a request body
severity: error
given: $.paths[*].get
then:
field: requestBody
function: falsy
servers-expected-domain:
description: Server URLs should be on the adm.com domain.
severity: warn
given: $.servers[*].url
then:
function: pattern
functionOptions:
match: adm\.com
query-params-casing:
description: Query parameters should be snake_case (the dominant convention in this API).
severity: warn
given: $.paths[*][get,post,put,patch,delete].parameters[?(@.in=='query')]
then:
field: name
function: casing
functionOptions:
type: snake
operationid-casing:
description: Operation IDs should be camelCase (the dominant convention in this API).
severity: warn
given: $.paths[*][get,post,put,patch,delete].operationId
then:
function: casing
functionOptions:
type: camel
schema-names-casing:
description: Component schema names should be PascalCase (the dominant convention in this API).
severity: warn
given: $.components.schemas
then:
field: '@key'
function: casing
functionOptions:
type: pascal
schema-properties-casing:
description: Schema properties should be snake_case (the dominant convention in this API).
severity: warn
given: $.components.schemas[*].properties
then:
field: '@key'
function: casing
functionOptions:
type: snake
error-schema-defined:
description: A shared error schema (ErrorResponse) should be defined for error payloads.
severity: warn
given: $.components.schemas
then:
field: ErrorResponse
function: truthy
operation-documents-401:
description: Operations should document a 401 response (documented on 100% of this API's operations).
severity: warn
given: $.paths[*][get,post,put,patch,delete].responses
then:
field: '401'
function: truthy
no-empty-descriptions:
description: Descriptions must not be empty strings.
severity: warn
given: $..description
then:
function: truthy