Aviation Weather Center · API Governance Rules
Aviation Weather Center API Rules
Spectral linting rules defining API design standards and conventions for Aviation Weather Center.
48 Rules
error 14
warn 24
info 10
Rule Categories
components
examples
external
info
method
no
openapi
operation
parameter
paths
rate
response
schema
security
servers
tags
Rules
error
info-title-required
Info object MUST have a title.
$.info
warn
info-title-pattern
Info title should reference AviationWeather, AWC, or NWS.
$.info.title
error
info-description-required
Info object MUST have a description.
$.info
warn
info-description-min-length
Info description should be at least 60 characters.
$.info.description
error
info-version-required
Info object MUST declare a version.
$.info
warn
info-contact-required
Info MUST list a contact (the AWC).
$.info
warn
info-license-required
Info MUST declare a license (U.S. Government Work).
$.info
warn
info-terms-of-service
AWC API documents terms of service inline. Reference the public docs page.
$.info.termsOfService
warn
openapi-version-31
The AviationWeather API publishes its schema in OpenAPI 3.1.
$.openapi
error
servers-required
A servers block MUST be defined.
$
error
servers-https
All server URLs MUST use HTTPS.
$.servers[*].url
warn
servers-aviationweather-host
Production server must point at aviationweather.gov.
$.servers[*].url
error
paths-api-data-prefix
All operational paths MUST be under /api/data/.
$.paths.*~
error
paths-lowercase
Resource segments MUST be lowercase alphanumeric.
$.paths.*~
error
paths-no-trailing-slash
Paths MUST NOT end with a trailing slash.
$.paths.*~
error
paths-no-query-string
Paths MUST NOT embed a query string — use parameters.
$.paths.*~
warn
paths-no-path-parameters
AWC endpoints are query-only — path parameters are not used.
$.paths.*~
error
operation-method-get-only
All AWC data endpoints are read-only GET operations.
$.paths[*]
error
operation-summary-required
Every operation MUST have a summary.
$.paths..get
warn
operation-summary-title-case
Operation summaries should use Title Case starting with a verb.
$.paths..get.summary
warn
operation-description-required
Every operation MUST have a description.
$.paths..get
warn
operation-tags-required
Every operation MUST declare at least one tag.
$.paths..get
error
operation-200-required
Every operation MUST declare a 200 response.
$.paths..get.responses
warn
operation-400-defined
Operations should declare a 400 response for invalid input.
$.paths..get.responses
warn
tags-defined
Global tags array MUST be defined.
$
warn
tags-title-case
Tag names should use Title Case (e.g. "Weather Data").
$.tags[*].name
warn
tags-description
Every tag should have a description.
$.tags[*]
warn
parameter-description-required
All parameters MUST have a description.
$..parameters[?(@.in)]
warn
parameter-camel-case
Query parameter names follow camelCase or short lowercase.
$..parameters[?(@.in=='query')].name
warn
parameter-format-enum
The shared `format` parameter must constrain to AWC formats.
$..parameters[?(@.name=='format')].schema.enum
info
parameter-ids-shape
The `ids` parameter is a comma-delimited list of ICAO identifiers.
$..parameters[?(@.name=='ids')]
info
parameter-bbox-shape
The `bbox` parameter is a `minLat,minLon,maxLat,maxLon` string.
$..parameters[?(@.name=='bbox')]
warn
response-description-required
All responses MUST have a description.
$..responses[*]
warn
response-200-has-content
200 responses MUST declare content (one or more media types).
$..responses['200']
info
response-supports-json
200 responses should expose application/json when JSON output is supported.
$..responses['200'].content
warn
schema-property-camel-case
JSON response properties follow camelCase (icaoId, validTimeFrom, etc.).
$.components.schemas..properties[*]~
info
schema-property-description
Schema properties should have a description.
$.components.schemas..properties[*]
warn
schema-icao-id-field
ICAO identifier fields use `icaoId` (camelCase) not `icao_id` or `ICAOId`.
$.components.schemas..properties[?(@property.match(/^(icao_id|ICAOId|ICAOID|icaoid)$/))]~
info
schema-unix-time-field
UNIX-epoch timestamp fields end in `Time` and are integers.
$.components.schemas..properties[?(@property.match(/Time$/))]
info
schema-coords-array
Coordinate arrays MUST be [lon, lat] with exactly two items.
$.components.schemas..properties.coordinates
warn
security-no-key-required
AWC is an open public service — no authentication required.
$
info
components-security-schemes-empty
No securitySchemes are needed for the public AWC API.
$.components.securitySchemes
error
method-no-request-body
GET operations MUST NOT include a requestBody.
$.paths..get
error
method-no-mutating-verbs
AWC API does not expose POST/PUT/PATCH/DELETE.
$.paths[*]
warn
no-empty-descriptions
Descriptions MUST NOT be empty strings.
$..description
info
external-docs-encouraged
Operations should link to the AWC docs page via externalDocs.
$.paths..get
info
examples-encouraged
Schemas should provide example values to aid client implementers.
$.components.schemas..properties[*]
info
rate-limit-documented
API description should mention the 100 req/min rate limit.
$.info.description