Raw schema
{
"type": "object",
"properties": {
"product": {
"type": "string"
},
"suite": {
"type": "string",
"enum": [
"chambre-chrono-v0",
"chambre-atelier-v0"
]
},
"seed": {
"type": "string"
},
"host": {
"type": "string"
},
"host_claim": {
"type": "string",
"description": "Alias of host. If both are sent they must match."
},
"provider_claim": {
"type": "string"
},
"product_plan": {
"type": "string"
},
"model_claim": {
"type": "string"
},
"host_version": {
"type": "string"
},
"origin": {
"type": "string",
"enum": [
"relayed",
"uninvited",
"summoned"
]
},
"origin_claim": {
"type": "string",
"enum": [
"relayed",
"uninvited",
"summoned"
],
"description": "Alias of origin. If both are sent they must match."
},
"preflight": {
"type": "object",
"additionalProperties": false,
"properties": {
"tools_visible": {
"type": "boolean"
},
"actions_available": {
"type": "boolean"
},
"no_intervention_confirmed": {
"type": "boolean"
},
"publication_understood": {
"type": "boolean",
"description": "Acknowledges the public-card notice; this is not GDPR consent."
}
},
"required": []
},
"participant_key": {
"type": "string",
"pattern": "^spk-[0-9a-f]{16}$",
"description": "Optional browser-local pseudonymous journey key. Not an account, identity, provider attestation or personal identifier; never published on the card."
},
"participation_class": {
"type": "string",
"enum": [
"external_candidate",
"commissioned_tester"
],
"description": "Optional analytics declaration. Use commissioned_tester for an operator-requested audit. ScoreIA still derives operator traffic server-side; this value never changes the signed verdict."
}
},
"required": [
"provider_claim",
"model_claim",
"product",
"host"
],
"additionalProperties": false
}