TheTVDB · API Governance Rules
TheTVDB API Rules
Spectral linting rules defining API design standards and conventions for TheTVDB.
36 Rules
error 12
warn 20
Rule Categories
tvdb
Rules
warn
tvdb-info-title-prefix
API title should reference TVDB
$.info.title
warn
tvdb-info-description-required
API info must include a description
$.info
error
tvdb-info-version-required
API info must include a version
$.info
warn
tvdb-openapi-version
Specs must declare OpenAPI 3.0.x
$.openapi
error
tvdb-servers-defined
At least one server must be defined
$
error
tvdb-server-https
All servers must use HTTPS
$.servers[*].url
warn
tvdb-server-base-url
Production server should be api4.thetvdb.com
$.servers[*].url
warn
tvdb-path-snake-or-lowercase
Paths must use lowercase with optional snake_case segments (no camelCase or PascalCase resource names)
$.paths.*~
error
tvdb-path-no-trailing-slash
Paths must not end with a trailing slash
$.paths.*~
error
tvdb-path-no-query-string
Paths must not include query strings (use parameters instead)
$.paths.*~
error
tvdb-operation-id-required
All operations must have an operationId
$.paths[*][get,post,put,patch,delete].operationId
warn
tvdb-operation-id-camel-case
operationId values must use camelCase
$.paths[*][get,post,put,patch,delete].operationId
warn
tvdb-operation-summary-required
All operations must have a summary
$.paths[*][get,post,put,patch,delete]
warn
tvdb-summary-prefix
Operation summaries should begin with 'TheTVDB'
$.paths[*][get,post,put,patch,delete].summary
warn
tvdb-summary-title-case
Operation summaries must start with an uppercase letter (Title Case)
$.paths[*][get,post,put,patch,delete].summary
warn
tvdb-operation-tags-required
All operations must declare at least one tag
$.paths[*][get,post,put,patch,delete]
warn
tvdb-tag-title-case
Operation tag names should use Title Case
$.paths[*][get,post,put,patch,delete].tags[*]
warn
tvdb-parameter-description-required
All parameters should have a description
$.paths[*][get,post,put,patch,delete].parameters[*]
error
tvdb-parameter-schema-required
All parameters must declare a schema with a type
$.paths[*][get,post,put,patch,delete].parameters[*]
hint
tvdb-pagination-page-parameter
Use the 'page' query parameter for paginated list endpoints (snake_case lowercase)
$.paths[*][get].parameters[?(@.in == 'query' && (@.name == 'pageNum' || @.name == 'pagenum'))]
warn
tvdb-request-body-json
Request bodies must use application/json
$.paths[*][post,put,patch].requestBody.content
error
tvdb-response-2xx-required
Every operation must define a successful 2xx response
$.paths[*][get,post,put,patch,delete].responses
warn
tvdb-response-401-defined
Authenticated endpoints should document a 401 Unauthorized response
$.paths[*][get,post,put,patch,delete].responses
warn
tvdb-response-json-content
2xx responses must return application/json
$.paths[*][get,post,put,patch,delete].responses['200','201','202'].content
error
tvdb-response-description-required
All responses must have a description
$.paths[*][get,post,put,patch,delete].responses[*]
hint
tvdb-schema-property-snake-or-camel
Schema property names should be lowercase, snake_case, or camelCase
$.components.schemas[*].properties.*~
hint
tvdb-schema-id-int64
Identifier properties named 'id' should use integer format int64
$.components.schemas[*].properties.id
warn
tvdb-schema-score-numeric
'score' properties must be numeric (used for relative popularity sorting)
$.components.schemas[*].properties.score
error
tvdb-global-security-defined
Global security must be defined (TheTVDB uses JWT bearer)
$
error
tvdb-bearer-auth-scheme
A 'bearerAuth' security scheme must be defined under components.securitySchemes
$.components.securitySchemes
warn
tvdb-bearer-jwt-format
The bearerAuth security scheme must specify type 'http', scheme 'bearer', bearerFormat 'JWT'
$.components.securitySchemes.bearerAuth
warn
tvdb-login-unsecured
The /login endpoint must override global security with [] (no auth required to obtain a token)
$.paths['/login'].post
error
tvdb-get-no-request-body
GET operations must not have a request body
$.paths[*].get
warn
tvdb-delete-no-request-body
DELETE operations should not have a request body
$.paths[*].delete
warn
tvdb-no-empty-descriptions
Descriptions must not be empty
$..description
hint
tvdb-microcks-operation-defined
Operations should define x-microcks-operation for mock server compatibility
$.paths[*][get,post,put,patch,delete]