Appendix A — Full PCT JSON Schema
The following JSON Schema (Draft 2020-12) defines the complete structure of a PCT payload. Implementations may use this schema for validation.
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://pct.dpglabs.io/schema/0.1/pct.json",
"title": "Privacy Claims Token",
"type": "object",
"required": [
"pct_id", "issued_at", "valid_from", "expires_at",
"issuer", "subject_id", "subject_type", "data_origin",
"data_categories", "lawful_basis", "allowed_purposes",
"jurisdiction_rules", "data_hash", "hash_algorithm",
"hash_scope"
],
"properties": {
"pct_id": { "type": "string", "format": "uuid" },
"issued_at": { "type": "integer" },
"valid_from": { "type": "integer" },
"expires_at": { "type": "integer" },
"issuer": { "type": "string", "format": "uri" },
"subject_id": { "type": "string" },
"subject_type": {
"type": "string",
"enum": ["dataset", "data_flow", "api_request", "ai_interaction", "transfer"]
},
"data_origin": { "type": "string", "pattern": "^[A-Z]{2}$" },
"data_categories": {
"type": "array",
"items": { "type": "string" },
"minItems": 1
},
"lawful_basis": {
"type": "object",
"required": ["bases"],
"properties": {
"bases": { "type": "array", "items": { "type": "string" } },
"framework": { "type": "string" }
}
},
"allowed_purposes": {
"type": "array",
"items": { "type": "string" },
"minItems": 1
},
"consent_status": { "type": "boolean" },
"consent_scope": { "type": "array", "items": { "type": "string" } },
"jurisdiction_rules": {
"type": "object",
"required": ["permitted_regions"],
"properties": {
"permitted_regions": { "type": "array" },
"restricted_regions": { "type": "array" },
"residency_required": { "type": "boolean" },
"sovereignty_framework": { "type": "string" }
}
},
"data_hash": { "type": "string" },
"hash_algorithm": { "type": "string", "enum": ["sha-256", "sha-384", "sha-512"] },
"hash_scope": { "type": "string", "enum": ["full_payload", "merkle_root"] },
"data_format": { "type": "string" },
"ai_context": { "type": "object" },
"extensions": { "type": "object" }
}
}