{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://contactzero.org/c0-schema/v1/identity-challenge-request.schema.json",
  "title": "C0 Identity Challenge Request",
  "description": "Opens a multi-round identity challenge session bound to an accepted T1 HandshakeEvent. Creates mutable IdentityChallengeSession + IdentityChallengeRound projections. source_node is a display label, NOT identity evidence. Self-claim authority is ignored.",
  "type": "object",
  "required": ["magic", "protocol", "linked_handshake_event_id", "linked_handshake_hash", "source_node"],
  "additionalProperties": false,
  "properties": {
    "magic": { "type": "string", "const": "0xC0" },
    "protocol": { "type": "string", "const": "C0::IDENTITY.CHALLENGE.REQUEST" },
    "linked_handshake_event_id": { "type": "string", "minLength": 1, "description": "Must resolve to a HandshakeEvent with status HANDSHAKE_ACCEPTED and evidence_tier T1_HANDSHAKE_ACKNOWLEDGED." },
    "linked_handshake_hash": { "type": "string", "minLength": 1, "description": "request_hash / ack_hash bound from the linked handshake." },
    "source_node": { "type": "string", "description": "Display label only. Not identity evidence." },
    "requested_rounds": { "type": "integer", "minimum": 1, "maximum": 7, "default": 3, "description": "1 through 7, default 3." }
  }
}
