Skip to main content
Use "type": "array" for ordered lists.

Core array keywords

KeywordWhat it does
prefixItemsPositional schemas for tuple-style arrays
itemsSchema for each array element
minItems / maxItemsBounds 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.