CustomerGdprConsent
GDPR data processing consent with version history for privacy policies, terms of service, and data processing agreements. Extends Consent entity with GDPR-specific properties for regulatory compliance.
Properties
Includes inherited properties from Consent
| Property | Type | Mode | Description | Required | Source |
|---|---|---|---|---|---|
| entityType | string | stored | Type of entity giving consent (Customer, Patient, Employee, User, etc.) Example: | Required | Consent |
| entityId | string | stored | Unique identifier of the entity giving consent Example: | Required | Consent |
| consentType | string | enum | Category of consent being tracked Values: Example: | Required | Consent |
| granted | boolean | stored | Whether consent is currently granted (true) or withdrawn (false) Example: | Required | Consent |
| grantedAt | DateTime | stored | Timestamp when consent was granted Example: | Optional | Consent |
| grantedIp | string | stored | IP address from which consent was granted (GDPR Article 7 proof requirement) Example: | Optional | Consent |
| grantedBy | User | stored | User who granted consent (if obtained by staff on behalf of entity) Example: | Optional | Consent |
| consentSource | string | enum | Source or method through which consent was obtained Values: Example: | Optional | Consent |
| withdrawnAt | DateTime | stored | Timestamp when consent was withdrawn Example: | Optional | Consent |
| withdrawnIp | string | stored | IP address from which consent was withdrawn Example: | Optional | Consent |
| withdrawnBy | User | stored | User who withdrew consent (if withdrawn by staff) | Optional | Consent |
| withdrawalReason | string | stored | Reason provided for consent withdrawal Example: | Optional | Consent |
| consentVersion | string | stored | Version of the consent form, policy, or terms under which consent was given Example: | Optional | Consent |
| language | Language | stored | Language in which consent was presented and obtained | Optional | Consent |
| expiresAt | DateTime | stored | Optional expiration date for time-limited consents Example: | Optional | Consent |
| metadata | object | stored | Additional consent-specific metadata (form ID, document URL, etc.) Example: | Optional | Consent |
| customer | Customer | stored | Reference to the customer who accepted or revoked GDPR consent (specialization of entityType/entityId from Consent) | Required | CustomerGdprConsent |
| gdprConsentType | string | enum | Specific type of GDPR consent or data subject right Values: Example: | Required | CustomerGdprConsent |
| policyVersion | string | stored | Version number of the policy document (privacy policy, terms, etc.) Example: | Required | CustomerGdprConsent |
| policyUrl | string | stored | URL to the exact version of the policy document that was accepted Example: | Optional | CustomerGdprConsent |
| policyChecksum | string | stored | SHA-256 checksum of the policy document for tamper-proof verification Example: | Optional | CustomerGdprConsent |
| isCurrentVersion | boolean | computed | Whether this is the current/latest version of the policy | Optional | CustomerGdprConsent |
| revokedAt | DateTime | stored | Timestamp when consent was revoked (for GDPR Article 17 Right to be Forgotten requests) Example: | Optional | CustomerGdprConsent |
| revocationReason | string | enum | GDPR Article under which consent was revoked Values: Example: | Optional | CustomerGdprConsent |
| requestFulfilledAt | DateTime | stored | Timestamp when GDPR data subject request was completed Example: | Optional | CustomerGdprConsent |
| dataRetentionUntil | DateTime | stored | Date until which data will be retained per GDPR compliance (after which data must be deleted) Example: | Optional | CustomerGdprConsent |
| legalBasis | string | enum | GDPR Article 6 legal basis for data processing Values: Example: | Required | CustomerGdprConsent |
| dataCategories | string[] | stored | Categories of personal data covered by this consent Example: | Optional | CustomerGdprConsent |
| processingPurposes | string[] | stored | Purposes for which data processing was consented Example: | Optional | CustomerGdprConsent |
Examples
Example 1
{
"@type": "CustomerGdprConsent",
"customer": {
"@type": "Customer",
"customerNumber": "CUST-2024-00123"
},
"gdprConsentType": "privacy_policy",
"granted": true,
"grantedAt": "2024-01-15T10:30:00Z",
"grantedIp": "192.168.1.100",
"consentSource": "web_form",
"policyVersion": "2.1",
"policyUrl": "https://example.com/privacy-policy-v2.1.pdf",
"policyChecksum": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6",
"isCurrentVersion": true,
"language": {
"@type": "Language",
"code": "en",
"name": "English"
},
"legalBasis": "consent",
"dataRetentionUntil": "2027-01-15T00:00:00Z",
"dataCategories": [
"identity",
"contact",
"financial"
],
"processingPurposes": [
"service_delivery",
"marketing",
"fraud_prevention"
]
}Example 2
{
"@type": "CustomerGdprConsent",
"customer": {
"@type": "Customer",
"customerNumber": "CUST-2024-00123"
},
"gdprConsentType": "terms_of_service",
"granted": true,
"grantedAt": "2024-01-15T10:30:00Z",
"grantedIp": "192.168.1.100",
"consentSource": "web_form",
"policyVersion": "1.5",
"policyUrl": "https://example.com/terms-v1.5.pdf",
"isCurrentVersion": false,
"language": {
"@type": "Language",
"code": "en",
"name": "English"
},
"legalBasis": "contract"
}Example 3
{
"@type": "CustomerGdprConsent",
"customer": {
"@type": "Customer",
"customerNumber": "CUST-2024-00123"
},
"gdprConsentType": "right_to_be_forgotten",
"granted": false,
"revokedAt": "2024-08-20T16:00:00Z",
"revocationReason": "right_to_be_forgotten",
"requestFulfilledAt": "2024-08-25T10:00:00Z",
"consentSource": "email",
"language": {
"@type": "Language",
"code": "en",
"name": "English"
}
}Example 4
{
"@type": "CustomerGdprConsent",
"customer": {
"@type": "Customer",
"customerNumber": "CLIENT-2024-00456"
},
"gdprConsentType": "data_processing",
"granted": true,
"grantedAt": "2024-03-10T11:00:00Z",
"grantedIp": "89.156.23.45",
"consentSource": "web_form",
"policyVersion": "2.1",
"policyUrl": "https://example.com/politique-confidentialite-v2.1.pdf",
"isCurrentVersion": true,
"language": {
"@type": "Language",
"code": "fr",
"name": "Français"
},
"legalBasis": "consent",
"dataRetentionUntil": "2027-03-10T00:00:00Z",
"dataCategories": [
"identity",
"contact",
"behavioral"
],
"processingPurposes": [
"service_delivery",
"analytics"
]
}Example 5
{
"@type": "CustomerGdprConsent",
"customer": {
"@type": "Customer",
"customerNumber": "CUST-2024-00789"
},
"gdprConsentType": "profiling_opt_out",
"granted": false,
"grantedAt": "2023-06-10T15:00:00Z",
"withdrawnAt": "2024-02-15T10:00:00Z",
"withdrawnIp": "203.0.113.60",
"revocationReason": "objection_to_processing",
"consentSource": "preference_center",
"policyVersion": "2.0",
"language": {
"@type": "Language",
"code": "en",
"name": "English"
},
"legalBasis": "legitimate_interests"
}