{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/WhisperrAI/whisperr-spec/main/schemas/push.schema.json", "title": "Whisperr push-token conformance cases", "type": "object", "required": ["version", "cases"], "additionalProperties": false, "properties": { "$schema": { "type": "string" }, "version": { "type": "integer", "minimum": 1 }, "description": { "type": "string" }, "cases": { "type": "array", "minItems": 1, "items": { "$ref": "#/$defs/case" } } }, "$defs": { "case": { "type": "object", "required": ["name", "steps", "expectedBodies"], "additionalProperties": false, "properties": { "name": { "type": "string", "minLength": 1 }, "steps": { "type": "array", "minItems": 1, "items": { "$ref": "#/$defs/step" } }, "expectedBodies": { "type": "array", "items": { "type": "object" } } } }, "step": { "type": "object", "minProperties": 1, "maxProperties": 1, "additionalProperties": false, "properties": { "identify": { "type": "object", "required": ["externalUserId"], "additionalProperties": false, "properties": { "externalUserId": { "type": "string", "minLength": 1 }, "traits": { "type": "object" }, "pushToken": { "type": "string" } } }, "setPushToken": { "type": "string" }, "restart": { "const": true }, "reset": { "const": true } } } } }