Working copy. Confirm the legal text with the controller (Leonard) or a lawyer before relying on it in production.
This text is a working draft. Legal content must be confirmed by the controller or a lawyer before you rely on it in production.
Public page: /privacy (session cookie axon_cookie_ok). Hub: Administration → GDPR (/admin/gdpr). Needs admin.gdpr.manage. The controller is the company you are signed into. Package: Enterprise/Full (feature gdpr).
| Entry | URL |
|---|---|
| GDPR hub | /admin/gdpr |
| Public privacy | /privacy |
| Public DSAR | /privacy/dsar |
| DSAR status token | /privacy/dsar/{token} |
| Compliance PDF | /admin/gdpr/compliance.pdf |
| Contract verification | /verify/contract/{token} |
consent_document_id) if one exists.consent_id + optional revoke reason.| Field | Required | What |
|---|---|---|
subject_type |
Yes | See subject table |
subject_id |
Yes | Record ID |
consent_type |
Yes | DATA_PROCESSING / MARKETING / LOYALTY / CARD / TERMS |
note |
No | Internal note |
Subject (subject_type) |
Example screen |
|---|---|
partner |
/partners/{id} |
employee |
/hr/employees/{id} |
loyalty_member |
/crm/loyalty |
rac_renter |
/rentacar/renters/{id} |
crm_lead |
/crm/leads |
crm_contact |
/crm/contacts |
hos_guest |
/hospitality/guests/{id} |
ACCESS (export) or ERASURE.OPEN.…/export.json, …/export.zip, …/export.pdf). Status → EXPORT_READY / COMPLETED; email when export is ready.POST …/erase) — anonymises contacts, deletes subject attachments, revokes active consents. Journals stay.| Field | Required | What |
|---|---|---|
subject_type / subject_id |
Yes | Subject |
request_type |
Yes | ACCESS or ERASURE |
requester_name / requester_email |
No | Requester |
notes |
No | Note |
| Status | Meaning |
|---|---|
OPEN |
Open |
EXPORT_READY |
Export ready to download |
COMPLETED |
Finished (export or erasure) |
REJECTED |
Rejected |
| Does | Does not delete |
|---|---|
| Anonymises contact fields | Accounting journals |
| Deletes subject attachments | Fiscal queue |
| Revokes active consents | Legal archive |
Partner: name → GDPR-{id}; tax ID kept |
Books / AR / GL |
/privacy/dsar.| Field | Required | What |
|---|---|---|
company_code or company_oib |
One of | Company identity |
requester_name / requester_email |
Yes | Requester |
tax_number |
No | Subject tax ID |
request_type |
Yes | ACCESS / ERASURE |
notes |
No | Note |
| Captcha / Turnstile | Yes | Anti-bot |
website_url |
Honeypot | Leave empty |
POST /admin/gdpr/ropa
| Field | What |
|---|---|
activity_code / title |
Code and title |
purpose, data_categories, subject_categories |
Processing description |
recipients, transfers, legal_basis |
Recipients / transfers / basis |
retention_days |
30–10950 |
security_measures, is_active |
Measures / active |
POST /admin/gdpr/breaches · mark authority notified: POST /admin/gdpr/breaches/{id}/authority-notified
| Field | What |
|---|---|
incident_number, discovered_at, reported_at |
Identity / dates |
severity |
LOW / MEDIUM / HIGH / CRITICAL |
status |
OPEN / INVESTIGATING / CLOSED |
affected_count, description, measures_taken |
Description |
notified_authority, notified_subjects |
Notifications |
POST /admin/gdpr/dpo-settings: gdpr_dpo_name, gdpr_dpo_email, gdpr_dpo_phone.
POST /admin/gdpr/retention: document_kind, keep_days (30–10950), is_active. Cleanup: php artisan axon:gdpr-retention (daily).
| Kind | Default days |
|---|---|
partner_attachment |
2555 |
employee_document |
3650 |
onboarding_upload |
3650 |
rac_attachment |
1825 |
generated_document |
3650 |
POST /admin/gdpr/consent-documents: consent_type, version?, title, body_hr?, body_en?. A new version deactivates the old one; contract signatures bind consent_document_id./privacy/dsar)./verify/contract/{token} — audit trail (MVP, not eIDAS).tools/SERVER_CRON.md):
axon:gdpr-breach-deadlines — DPO reminderaxon:gdpr-retention — attachment cleanupaxon:contract-expiry-notify — contracts (see /help/contracts)/admin/gdpr/compliance.pdf (ROPA, consents, DSAR, breaches).| Problem | Cause | What to do |
|---|---|---|
| Hub 403 | No admin.gdpr.manage / package |
Enterprise+ + right |
| Empty export | Wrong subject / no data | Check type + ID |
| Erasure “keeps tax ID” | Intentional | Tax ID remains a business ID |
| Public DSAR throttle | Too many attempts | Wait; captcha |
| Retention does not clean | Days / job | Set keep_days + run artisan |
| No breach reminder | No DPO email / cron | DPO settings + scheduler |
| Empty compliance PDF | No ROPA/consents | Bootstrap or manual entry |
| Consent unbound to version | No published text | Publish consent document |
admin.gdpr.manage (or master-data admin, depending on assignment). Public DSAR without login (throttled).
Nothing. Books are never erased.