IPGeolocation.io · API Governance Rules
IPGeolocation.io API Rules
Spectral linting rules defining API design standards and conventions for IPGeolocation.io.
40 Rules
error 18
warn 17
info 5
Rule Categories
bulk
contact
delete
get
info
license
no
openapi
operation
parameter
path
request
response
schema
security
server
servers
tag
tags
Rules
error
info-title-prefix
Info title must start with "IPGeolocation.io".
$.info
error
info-version-required
Info must declare an API version.
$.info
warn
info-description-required
Info must include a description of at least 40 characters.
$.info
error
openapi-version-3
Specs must declare OpenAPI 3.0.x or 3.1.x.
$
error
servers-required
A servers array must be defined.
$
error
server-must-be-https
All server URLs must use HTTPS.
$.servers[*]
warn
server-must-be-ipgeolocation-host
Server URL must be https://api.ipgeolocation.io.
$.servers[*]
error
path-must-be-versioned
All operation paths must begin with /v3/.
$.paths
error
path-no-trailing-slash
Paths must not end with a trailing slash.
$.paths
warn
path-kebab-or-camel
Path segments are kebab-case (preferred) or camelCase. No snake_case, no PascalCase, no spaces.
$.paths
error
operation-summary-required
Every operation must have a summary.
$.paths[*][get,post,put,patch,delete]
warn
operation-description-required
Every operation must have a description.
$.paths[*][get,post,put,patch,delete]
error
operation-operationid-required
Every operation must define an operationId.
$.paths[*][get,post,put,patch,delete]
warn
operation-operationid-camelcase
operationId must be camelCase (e.g. lookupIpGeolocation).
$.paths[*][get,post,put,patch,delete]
error
operation-tags-required
Every operation must declare at least one tag.
$.paths[*][get,post,put,patch,delete]
info
operation-microcks-extension
Operations should declare x-microcks-operation for mock-server use.
$.paths[*][get,post,put,patch,delete]
warn
tags-must-be-defined-globally
A global tags array must exist.
$
warn
tag-title-case
Tag names use Title Case (e.g. "IP Geolocation", "User Agent", "Astronomy"). No kebab-case, no snake_case.
$.tags[*]
warn
tag-description-required
Each global tag must include a description.
$.tags[*]
warn
parameter-description-required
Each parameter must include a description.
$.paths[*][get,post,put,patch,delete].parameters[*]
error
parameter-schema-required
Each parameter must declare a schema with type.
$.paths[*][get,post,put,patch,delete].parameters[*]
warn
parameter-name-camelcase
Parameter names use camelCase (e.g. ip, apiKey, lang).
$.paths[*][get,post,put,patch,delete].parameters[*]
warn
request-body-json-content-type
Request bodies must support application/json.
$.paths[*][post,put,patch].requestBody.content
info
request-body-description-required
Each request body should have a description.
$.paths[*][post,put,patch].requestBody
error
response-success-required
Every operation must define at least one 2xx response.
$.paths[*][get,post,put,patch,delete].responses
warn
response-401-required
All operations must document a 401 unauthorized response.
$.paths[*][get,post,put,patch,delete].responses
info
response-429-recommended
Operations should document a 429 throttling response.
$.paths[*][get,post,put,patch,delete].responses
error
response-description-required
Every response must include a description.
$.paths[*][get,post,put,patch,delete].responses[*]
warn
response-json-content-type
Success responses must offer application/json.
$.paths[*][get,post,put,patch,delete].responses['200','201'].content
warn
schema-property-snake-or-camel
Schema property names use snake_case (preferred) or camelCase across IPGeolocation responses. No PascalCase or kebab-case.
$.components.schemas[*].properties
warn
schema-description-required
Top-level schemas should include a description.
$.components.schemas[*]
error
security-scheme-required
The spec must define at least one security scheme.
$.components.securitySchemes
warn
security-apikey-scheme
Security scheme must be the apiKey query parameter named apiKey.
$.components.securitySchemes.ApiKeyAuth
warn
security-global-required
A global security requirement must be declared.
$
error
get-no-request-body
GET operations must not declare a request body.
$.paths[*].get
error
delete-no-request-body
DELETE operations must not declare a request body.
$.paths[*].delete
error
bulk-must-be-post
Bulk endpoints must use POST.
$.paths[?(@property.match(/-bulk$/i))]
error
no-empty-summary
Operation summaries must be non-empty.
$.paths[*][get,post,put,patch,delete].summary
info
contact-recommended
Info should include a contact block for support routing.
$.info
info
license-recommended
Info should declare a license.
$.info