Spectral · Schema
Spectral Ruleset
A Spectral ruleset configuration file defining API linting rules and extensions.
API DesignAPI LintingAPI Style GuideAsyncAPIJSON SchemaOpenAPIQuality Assurance
Properties
| Name | Type | Description |
|---|---|---|
| extends | object | Ruleset(s) to extend. Accepts a string or array of npm package names or URLs. |
| rules | object | Map of rule names to rule definitions. |
| aliases | object | Map of alias names to JSONPath expressions for reuse across rules. |
| overrides | array | Override rule severities for specific file patterns. |
| formats | array | Limit ruleset to specific document formats. |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://spectral.stoplight.io/schemas/ruleset",
"title": "Spectral Ruleset",
"description": "A Spectral ruleset configuration file defining API linting rules and extensions.",
"type": "object",
"properties": {
"extends": {
"oneOf": [
{ "type": "string" },
{ "type": "array", "items": { "type": "string" } }
],
"description": "Ruleset(s) to extend. Accepts a string or array of npm package names or URLs."
},
"rules": {
"type": "object",
"description": "Map of rule names to rule definitions.",
"additionalProperties": {
"$ref": "#/$defs/Rule"
}
},
"aliases": {
"type": "object",
"description": "Map of alias names to JSONPath expressions for reuse across rules.",
"additionalProperties": {
"oneOf": [
{ "type": "string" },
{ "type": "array", "items": { "type": "string" } }
]
}
},
"overrides": {
"type": "array",
"description": "Override rule severities for specific file patterns.",
"items": {
"type": "object",
"properties": {
"files": {
"type": "array",
"items": { "type": "string" }
},
"rules": {
"type": "object",
"additionalProperties": {
"oneOf": [
{ "type": "string", "enum": ["error", "warn", "info", "hint", "off"] },
{ "type": "integer", "minimum": 0, "maximum": 3 }
]
}
}
},
"required": ["files", "rules"]
}
},
"formats": {
"type": "array",
"items": { "type": "string" },
"description": "Limit ruleset to specific document formats."
}
},
"$defs": {
"Rule": {
"type": "object",
"properties": {
"description": {
"type": "string",
"description": "Human-readable description of what the rule enforces."
},
"message": {
"type": "string",
"description": "Message shown when the rule is violated. Supports {{error}} and {{path}} placeholders."
},
"severity": {
"oneOf": [
{ "type": "string", "enum": ["error", "warn", "info", "hint", "off"] },
{ "type": "integer", "minimum": 0, "maximum": 3 }
],
"description": "Severity level: error(0), warn(1), info(2), hint(3), or off."
},
"given": {
"oneOf": [
{ "type": "string" },
{ "type": "array", "items": { "type": "string" } }
],
"description": "JSONPath expression(s) selecting nodes to test."
},
"then": {
"oneOf": [
{ "$ref": "#/$defs/Then" },
{ "type": "array", "items": { "$ref": "#/$defs/Then" } }
]
},
"formats": {
"type": "array",
"items": { "type": "string" },
"description": "Limit the rule to specific document formats."
},
"recommended": {
"type": "boolean",
"description": "Whether to include this rule in recommended mode."
}
},
"required": ["given", "then"]
},
"Then": {
"type": "object",
"properties": {
"field": {
"type": "string",
"description": "Optional sub-field to apply the function to."
},
"function": {
"type": "string",
"description": "Name of the Spectral function to apply (truthy, falsy, pattern, schema, enumeration, length, etc.)."
},
"functionOptions": {
"type": "object",
"description": "Options to pass to the function.",
"additionalProperties": true
}
},
"required": ["function"]
}
}
}