This rule checks whether the #/info/x-id attribute is present in an OpenAPI
schema and if it’s a valid UUID.
Uniquely identifying an API in tracking and managing different versions of the API. OpenAPI, however, does not provide an “identifier” field for an API.
The id-defined rule fills this gap. It ensures that ID attribute is defined
in an OpenAPI info object, and that its value matches the expected format.
The rule configuration must be an object with two attributes, attribute and
pattern. attribute specified the name of the ID attribute, and pattern
specifies its expected format. Neither of them can be empty or missing.
attribute must start with x-, as the ID attribute is an extension.
pattern value can be uuid which is treated as UUID regexp, or a string
representing ECMAScript regexp.
Configuration Example. The following configuration makes the rule look for
the #/info/x-ident attribute, whose value must be a sequence of one or more
lower case letters.
lint:
rules:
id-defined:
- error
- attribute: x-ident
pattern: "[a-z]+"
This rule should be used whenever an OpenAPI schema is being defined. For instance:
Good. Now we can rename, version or modify the schema file, or introduce any other change, and still be able to track the API.
openapi: 3.0.3
info:
title: Payments
version: 1.2.8
x-id: 123e4567-e89b-12d3-a456-426614174000
paths: ...
Bad. In the following example, it is difficult to track the evolution of the API. Renaming a schema file, or creating a different API with the same title will lead to ambiguities.
openapi: 3.0.3
info:
title: Payments
version: 1.2.4
paths: ...
Bad. In the following example, value of the x-id field is not an UUID.
It makes it difficult to ensure the uniqueness of this identifier.
openapi: 3.0.3
info:
title: Payments
version: 1.2.8
x-id: 237849128738
paths: ...
If pattern is set to uuid, this rule becomes auto-fixing. If the linter
is invoked with the --fix option, it automatically generates an UUID v4 in
correct place of the schema.
We recommend to always set this attribute.
This rule is compatible with all OpenAPI 3.x version.