{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/api-evangelist/algolia/main/json-schema/algolia-timeseries-payload-schema.json", "title": "Timeseries query", "x-generated": "2026-09-23", "x-method": "derived", "x-generator": "derive-json-schema.py", "x-source": "openapi/algolia-analytics-api-openapi.yml#/components/schemas/TimeseriesPayload", "type": "object", "additionalProperties": false, "required": [ "metrics", "parameters" ], "properties": { "domain": { "type": "string", "description": "Default domain propagated to entries that omit their own." }, "metrics": { "type": "array", "description": "Fields to aggregate.", "items": { "$ref": "#/$defs/FieldReference" } }, "groupBy": { "type": "array", "description": "Fields to split the series by.", "items": { "$ref": "#/$defs/FieldReference" } }, "filters": { "type": "array", "description": "Filter conditions.", "items": { "$ref": "#/$defs/FilterDefinition" } }, "parameters": { "type": "array", "description": "Literal values referenced by the query.", "items": { "$ref": "#/$defs/ParameterDefinition" } }, "limit": { "type": "integer", "default": 100, "minimum": 1, "maximum": 100, "description": "Maximum number of series (groupBy values) to return." }, "offset": { "type": "integer", "default": 0, "minimum": 0, "description": "Number of series to skip." } }, "$defs": { "FieldReference": { "type": "object", "title": "Field reference", "additionalProperties": false, "required": [ "kind" ], "properties": { "domain": { "type": "string", "description": "Domain the field belongs to. Defaults to the payload's top-level `domain` when omitted." }, "kind": { "type": "string", "description": "Field identifier within the domain, as listed by the `/3/patterns/fields` catalog." } } }, "FilterDefinition": { "type": "object", "title": "Filter definition", "additionalProperties": false, "required": [ "kind" ], "properties": { "domain": { "type": "string", "description": "Domain the field belongs to." }, "kind": { "type": "string", "description": "Field to filter on. With no `operator`, the field must be boolean." }, "operator": { "$ref": "#/$defs/filterOperator" }, "parameter": { "$ref": "#/$defs/ParameterReference" } } }, "ParameterDefinition": { "type": "object", "title": "Parameter definition", "additionalProperties": false, "required": [ "kind", "value" ], "properties": { "domain": { "type": "string", "description": "Domain the parameter belongs to." }, "kind": { "type": "string", "description": "Parameter identifier, for example `indices`, `startDate`, `endDate`, `tags`, or `country`." }, "value": { "$ref": "#/$defs/parameterValue" } } }, "ParameterReference": { "type": "object", "title": "Parameter reference", "additionalProperties": false, "required": [ "kind" ], "properties": { "domain": { "type": "string", "description": "Domain the parameter belongs to." }, "kind": { "type": "string", "description": "Parameter identifier that resolves to a value supplied in `parameters`." } } }, "filterOperator": { "type": "string", "description": "Comparison operator applied to a filter field, one of: `=`, `!=`, `>`, `<`, `>=`, `<=`, `IN`, `TAG_TREE`, `CONTAINS`, `STARTS_WITH`, `CONTAINS_PREFIX`. Requires a `parameter` to carry the operand." }, "parameterValue": { "description": "Literal value. Its JSON type depends on `kind` (array of strings for `indices`, string for dates, tags, and country, number for numeric operands, and so on).", "oneOf": [ { "type": "string" }, { "type": "number", "format": "double" }, { "type": "boolean" }, { "type": "array", "items": { "type": "string" } } ] } } }