Use "type": "array" for ordered lists.
Core array keywords
| Keyword | What it does |
|---|
prefixItems | Positional schemas for tuple-style arrays |
items | Schema for each array element |
minItems / maxItems | Bounds array length |
contains, minContains, maxContains, uniqueItems and unevaluatedItems are not supported right now.
If you have a use case that requires them, reach out to us.
Example
{
"type": "object",
"properties": {
"values": {
"type": "array",
"items": {
"type": "number"
},
"minItems": 1,
"maxItems": 5
}
},
"required": ["values"],
"additionalProperties": false
}
For capped payload size, always set maxItems. The default value of minItems is 0.
prefixItems
Use prefixItems for tuple-style arrays where position matters:
{
"type": "object",
"properties": {
"metric": {
"type": "array",
"prefixItems": [
{ "type": "string", "enum": ["latency_ms", "error_count"] },
{ "type": "number", "minimum": 0 }
],
"items": false
}
},
"required": ["metric"],
"additionalProperties": false
}
This example enforces a two-element array: a metric name followed by a numeric value.