The foundation of any consent management system lies in its data models. WIA-UNIVERSAL-CONSENT defines precise, extensible schemas that capture all aspects of user consent while enabling interoperability across systems and compliance with global regulations. This chapter provides a comprehensive reference for all consent-related data structures.
2.1 Core Consent Receipt Schema
The Consent Receipt is the fundamental unit of record in WIA-UNIVERSAL-CONSENT. It provides a complete, verifiable record of a consent transaction that can be used for compliance audits, user transparency, and consent verification. The schema is designed to be self-describing, machine-readable, and cryptographically verifiable.
The Consent Receipt schema follows the Kantara Initiative Consent Receipt Specification while extending it with WIA-specific fields for integration with other Universal standards, particularly WIA-UNIVERSAL-IDENTITY for subject identification and WIA-UNIVERSAL-TIMESTAMP for cryptographic timestamping.
{
"$schema": "https://wia.org/schemas/universal-consent/receipt/v1.0",
"receiptId": "wia-cr-550e8400-e29b-41d4-a716-446655440000",
"version": "1.0",
"jurisdiction": "gdpr",
"timestamp": {
"issued": "2025-01-15T10:30:00.000Z",
"wiaTimestampToken": "eyJhbGciOiJSUzI1NiIsInR5cCI6IldJQS1UU1QifQ...",
"timestampAuthority": "wia-tsa.org"
},
"subject": {
"principalId": "wia-id-user-12345678",
"principalIdScheme": "wia-universal-identity-v1",
"verification": {
"method": "email_verified",
"verifiedAt": "2025-01-15T10:29:45.000Z",
"assuranceLevel": "substantial"
}
},
"controller": {
"name": "Example Corporation",
"contact": "privacy@example.com",
"address": "123 Privacy Street, Dublin, Ireland",
"registrationId": "IE-DPC-12345",
"dpoContact": "dpo@example.com"
},
"purposes": [
{
"purposeId": "marketing-email",
"purposeCategory": "marketing",
"description": "Send promotional emails about products and services",
"legalBasis": "consent",
"consentStatus": true,
"dataCategories": ["email", "name", "preferences"],
"retention": {
"period": 24,
"unit": "months",
"justification": "Marketing subscription duration"
},
"thirdParties": [
{
"name": "Email Service Provider Inc.",
"purpose": "Email delivery",
"country": "US",
"transferMechanism": "standard_contractual_clauses"
}
]
}
],
"collectionMethod": {
"method": "web_form",
"interface": "consent_management_platform",
"version": "2.1",
"language": "en",
"userAgent": "Mozilla/5.0...",
"ipAddress": "[hashed]"
},
"policyUri": "https://example.com/privacy-policy",
"policyVersion": "2025-01",
"signature": {
"algorithm": "ES256",
"value": "MEYCIQDvF2WgY5bN...",
"keyId": "wia-key-2025-01"
}
}
2.1.1 Receipt Field Specifications
| Field | Type | Required | Description |
|---|---|---|---|
receiptId |
string (UUID) | Yes | Globally unique identifier for the consent receipt with WIA prefix |
version |
string (semver) | Yes | Schema version for forward compatibility |
jurisdiction |
string (enum) | Yes | Applicable regulatory jurisdiction (gdpr, ccpa, lgpd, etc.) |
timestamp |
object | Yes | Timestamp information with WIA-UNIVERSAL-TIMESTAMP integration |
subject |
object | Yes | Data subject identification with WIA-UNIVERSAL-IDENTITY integration |
controller |
object | Yes | Data controller information including DPO contact |
purposes |
array | Yes | Array of consent purposes with granular settings |
collectionMethod |
object | Yes | How consent was collected (web form, mobile app, etc.) |
policyUri |
string (URI) | Yes | Link to the privacy policy applicable at time of consent |
signature |
object | Yes | Cryptographic signature for receipt integrity |
2.2 Preference Center Data Model
The Preference Center model provides a comprehensive structure for managing user preferences across multiple consent types and communication channels. This model enables sophisticated preference management while maintaining the granularity required for regulatory compliance.
+-----------------------------------------------------------------------+
| PREFERENCE CENTER DATA MODEL |
+-----------------------------------------------------------------------+
| |
| +------------------------+ +------------------------+ |
| | USER PROFILE | | CONSENT SETTINGS | |
| |------------------------| |------------------------| |
| | - userId |<---->| - globalOptOut | |
| | - identityRef | | - categoryPreferences | |
| | - locale | | - channelPreferences | |
| | - timezone | | - vendorPreferences | |
| +------------------------+ +------------------------+ |
| | | |
| v v |
| +------------------------+ +------------------------+ |
| | COMMUNICATION PREFS | | PURPOSE CONSENTS | |
| |------------------------| |------------------------| |
| | - channels[] | | - purposeId | |
| | - frequency | | - status | |
| | - quietHours | | - grantedAt | |
| | - doNotDisturb | | - expiresAt | |
| +------------------------+ +------------------------+ |
| |
+-----------------------------------------------------------------------+
{
"$schema": "https://wia.org/schemas/universal-consent/preference-center/v1.0",
"preferenceSetId": "wia-pref-87654321-abcd-efgh-ijkl-mnopqrstuvwx",
"userId": "wia-id-user-12345678",
"identityProvider": "wia-universal-identity",
"lastUpdated": "2025-01-15T14:22:00.000Z",
"locale": "en-US",
"timezone": "America/New_York",
"globalSettings": {
"optOutAll": false,
"doNotSell": true,
"doNotShare": true,
"limitSensitiveData": true
},
"categoryPreferences": {
"essential": {
"enabled": true,
"modifiable": false,
"description": "Required for basic functionality"
},
"analytics": {
"enabled": true,
"modifiable": true,
"grantedAt": "2025-01-10T08:00:00.000Z",
"receiptId": "wia-cr-analytics-001"
},
"marketing": {
"enabled": false,
"modifiable": true,
"declinedAt": "2025-01-10T08:00:00.000Z"
},
"personalization": {
"enabled": true,
"modifiable": true,
"grantedAt": "2025-01-12T16:30:00.000Z",
"receiptId": "wia-cr-personalization-001"
}
},
"channelPreferences": {
"email": {
"enabled": true,
"address": "user@example.com",
"verified": true,
"frequency": "weekly",
"categories": ["product_updates", "security_alerts"]
},
"sms": {
"enabled": false,
"number": null
},
"push": {
"enabled": true,
"deviceTokens": ["token-ios-001", "token-android-001"],
"quietHours": {
"enabled": true,
"start": "22:00",
"end": "08:00"
}
},
"postal": {
"enabled": false
}
},
"vendorPreferences": {
"schemaVersion": "tcf-2.2",
"vendors": {
"vendor-google-analytics": {
"consent": true,
"legitimateInterest": false
},
"vendor-facebook-pixel": {
"consent": false,
"legitimateInterest": false
}
}
},
"metadata": {
"wiaMetadataRef": "wia-meta-pref-12345",
"createdAt": "2024-06-15T10:00:00.000Z",
"updatedAt": "2025-01-15T14:22:00.000Z",
"version": 15,
"source": "preference_center_web"
}
}
2.3 Consent Purpose Taxonomy
WIA-UNIVERSAL-CONSENT defines a standardized taxonomy of consent purposes that enables interoperability while allowing for organizational customization. This taxonomy is hierarchical, with broad categories containing specific purposes that can be further refined.
| Category | Purpose ID | Description | Typical Legal Basis |
|---|---|---|---|
| Essential | essential.service |
Core service functionality | Contract / Legitimate Interest |
essential.security |
Security and fraud prevention | Legitimate Interest | |
essential.authentication |
User authentication | Contract | |
| Analytics | analytics.performance |
Performance monitoring | Consent |
analytics.usage |
Usage statistics | Consent | |
analytics.debugging |
Error tracking and debugging | Consent / Legitimate Interest | |
| Marketing | marketing.email |
Email marketing communications | Consent |
marketing.sms |
SMS marketing messages | Consent | |
marketing.push |
Push notification marketing | Consent | |
marketing.advertising |
Targeted advertising | Consent | |
| Personalization | personalization.content |
Personalized content recommendations | Consent |
personalization.profiling |
User profiling for personalization | Consent | |
| Third Party | thirdparty.sharing |
Data sharing with partners | Consent |
thirdparty.sale |
Data sale (CCPA-specific) | Consent / Opt-out |
2.3.1 Purpose Definition Schema
{
"purposeDefinition": {
"purposeId": "marketing.email",
"version": "1.0",
"category": "marketing",
"name": {
"en": "Email Marketing",
"es": "Marketing por Correo Electronico",
"de": "E-Mail-Marketing",
"pt": "Marketing por E-mail",
"ja": "Eメールマーケティング"
},
"description": {
"en": "We will send you promotional emails about our products, services, and special offers. You can unsubscribe at any time.",
"es": "Le enviaremos correos electrónicos promocionales sobre nuestros productos, servicios y ofertas especiales. Puede cancelar la suscripción en cualquier momento."
},
"legalBases": ["consent"],
"dataElements": [
{
"element": "email_address",
"category": "contact",
"required": true
},
{
"element": "first_name",
"category": "identity",
"required": false
},
{
"element": "preferences",
"category": "behavioral",
"required": false
}
],
"retention": {
"defaultPeriod": 24,
"unit": "months",
"maxPeriod": 36,
"deletionPolicy": "on_withdrawal_or_expiry"
},
"jurisdictionSpecific": {
"gdpr": {
"applicableArticles": ["6.1.a", "7"],
"requiresExplicitConsent": true
},
"ccpa": {
"isSale": false,
"isShare": false
},
"lgpd": {
"applicableArticles": ["7.I", "8"],
"requiresSeparateConsent": true
}
}
}
}
2.4 Consent Transaction Records
Every consent interaction is recorded as a transaction, creating an immutable audit trail that satisfies regulatory requirements for demonstrating valid consent. The transaction record captures the complete context of each consent decision, enabling reconstruction of the consent state at any point in time.
Consent transaction records are enriched with metadata following the WIA-UNIVERSAL-METADATA standard. This metadata enables advanced querying, analytics, and compliance reporting across the consent management ecosystem.
{
"$schema": "https://wia.org/schemas/universal-consent/transaction/v1.0",
"transactionId": "wia-tx-2025-01-15-00001234",
"transactionType": "consent_grant",
"timestamp": {
"eventTime": "2025-01-15T10:30:00.000Z",
"serverTime": "2025-01-15T10:30:00.123Z",
"wiaTimestamp": {
"token": "eyJhbGciOiJFZDI1NTE5...",
"authority": "tsa.wia.org",
"serialNumber": 1705315800123
}
},
"subject": {
"universalId": "wia-uid-a1b2c3d4e5f6",
"pseudonymId": "pnym-xyz789",
"authenticationLevel": "mfa_verified"
},
"previousState": {
"purposes": {
"marketing.email": null,
"analytics.usage": true
}
},
"newState": {
"purposes": {
"marketing.email": true,
"analytics.usage": true
}
},
"changes": [
{
"purposeId": "marketing.email",
"previousValue": null,
"newValue": true,
"changeType": "initial_grant"
}
],
"collectionContext": {
"channel": "web",
"interface": "consent_banner",
"interfaceVersion": "3.2.1",
"interfaceLanguage": "en",
"pageUrl": "https://example.com/checkout",
"referrer": "https://example.com/cart",
"device": {
"type": "desktop",
"os": "macOS",
"browser": "Chrome",
"screenResolution": "1920x1080"
},
"geolocation": {
"country": "DE",
"region": "Bavaria",
"detectionMethod": "ip_geolocation"
}
},
"consentText": {
"version": "2025-01-01",
"hash": "sha256-abc123def456...",
"content": "I agree to receive promotional emails about products and services..."
},
"verification": {
"method": "checkbox_click",
"userAction": "explicit_opt_in",
"confirmationDisplayed": true
},
"metadata": {
"wiaMetadataId": "wia-meta-tx-001234",
"tags": ["checkout_flow", "new_customer"],
"processingNode": "consent-processor-eu-west-1"
}
}
2.5 Data Exchange Formats
WIA-UNIVERSAL-CONSENT supports multiple data exchange formats to enable interoperability with existing systems while promoting the adoption of standard formats. The WIA-UNIVERSAL-DATA-EXCHANGE standard defines the canonical serialization formats and transformation rules.
+------------------------------------------------------------------+
| DATA EXCHANGE FORMAT HIERARCHY |
+------------------------------------------------------------------+
| |
| +-------------------+ |
| | WIA CANONICAL | Primary format for WIA ecosystem |
| | (JSON-LD) | |
| +---------+---------+ |
| | |
| v |
| +---------+---------+ |
| | TRANSFORMATION | |
| | ENGINE | |
| +---------+---------+ |
| | |
| +--------+--------+--------+--------+ |
| | | | | | |
| v v v v v |
| +------+ +------+ +------+ +------+ +------+ |
| | JSON | | XML | | CSV | |Proto | | YAML | |
| +------+ +------+ +------+ +------+ +------+ |
| |
+------------------------------------------------------------------+
2.5.1 JSON-LD Canonical Format
The canonical format for WIA-UNIVERSAL-CONSENT uses JSON-LD (JSON for Linked Data) to enable semantic interoperability and integration with knowledge graphs. This format includes context definitions that link consent data to standard vocabularies.
{
"@context": {
"@vocab": "https://wia.org/vocab/consent#",
"schema": "https://schema.org/",
"gdpr": "https://w3id.org/GDPRtEXT#",
"dpv": "https://w3id.org/dpv#",
"wia": "https://wia.org/ontology#"
},
"@type": "ConsentReceipt",
"@id": "https://wia.org/receipts/wia-cr-550e8400",
"wia:version": "1.0",
"dpv:hasDataSubject": {
"@type": "dpv:DataSubject",
"wia:universalId": "wia-uid-12345"
},
"dpv:hasDataController": {
"@type": "dpv:DataController",
"schema:name": "Example Corporation",
"schema:email": "privacy@example.com"
},
"dpv:hasPurpose": [
{
"@type": "dpv:Marketing",
"dpv:hasLegalBasis": {
"@type": "gdpr:A6-1-a"
}
}
]
}
2.6 Consent State Machine
The consent state machine defines all valid states for consent and the transitions between them. Understanding this state machine is essential for implementing correct consent lifecycle management. Each transition is recorded as a transaction, ensuring complete auditability.
+-------------------+
| |
v |
+--------+ +--------+ +--------+
| NOT |-------->| PENDING|-------->|GRANTED |
| ASKED | ask | | grant | |
+--------+ +--------+ +--------+
^ | |
| | deny | withdraw
| v v
| +--------+ +--------+
| | DENIED | |WITHDRAWN|
| | | | |
| +--------+ +--------+
| | |
| | ask_again | ask_again
| v v
| +--------+ +--------+
+-------------| RE- |<--------| RE- |
| ASK | | ENGAGE |
+--------+ +--------+
State Descriptions:
- NOT_ASKED: Consent has never been requested
- PENDING: Consent request displayed, awaiting response
- GRANTED: User has given consent
- DENIED: User has explicitly denied consent
- WITHDRAWN: User has withdrawn previously granted consent
- RE_ASK: Eligible for re-engagement after denial
- RE_ENGAGE: Eligible for re-engagement after withdrawal
| State | Code | Processing Allowed | Valid Transitions |
|---|---|---|---|
| NOT_ASKED | 0 |
No | PENDING |
| PENDING | 1 |
No | GRANTED, DENIED |
| GRANTED | 2 |
Yes | WITHDRAWN, EXPIRED |
| DENIED | 3 |
No | RE_ASK |
| WITHDRAWN | 4 |
No | RE_ENGAGE |
| EXPIRED | 5 |
No | PENDING |
2.7 Validation and Schema Enforcement
All consent data structures must be validated against their respective JSON Schemas before storage or transmission. The validation layer ensures data integrity and enables interoperability guarantees across the consent management ecosystem.
Consent data that fails validation MUST be rejected with appropriate error codes defined in WIA-UNIVERSAL-ERROR-HANDLING. Partial or malformed consent records can lead to compliance violations and should never be accepted.
// WIA-UNIVERSAL-CONSENT Validation Interface
interface ConsentValidator {
// Validate consent receipt against schema
validateReceipt(receipt: ConsentReceipt): ValidationResult;
// Validate preference center data
validatePreferences(prefs: PreferenceCenter): ValidationResult;
// Validate transaction record
validateTransaction(tx: ConsentTransaction): ValidationResult;
// Validate purpose definition
validatePurpose(purpose: PurposeDefinition): ValidationResult;
}
interface ValidationResult {
valid: boolean;
errors: ValidationError[];
warnings: ValidationWarning[];
schemaVersion: string;
validatedAt: Date;
}
interface ValidationError {
code: string; // WIA error code
path: string; // JSON path to invalid field
message: string; // Human-readable message
severity: 'error' | 'critical';
}
2.8 Chapter Summary
- The Consent Receipt is the fundamental unit of record, containing complete consent transaction details
- Preference Center model enables sophisticated multi-channel preference management
- Standardized purpose taxonomy ensures interoperability across systems
- Transaction records create immutable audit trails for compliance
- JSON-LD canonical format enables semantic interoperability
- Consent state machine defines valid states and transitions
- Strict validation ensures data integrity across the ecosystem
Chapter 3 explores Identity Integration, covering OAuth 2.0/OIDC integration, WIA-UNIVERSAL-IDENTITY binding, pseudonymization techniques, and authentication requirements for consent operations.