Data Subject Requests (DSR)
Admin-facing endpoints for executing GDPR Data Subject Request operations — data export (Right to Access) and data erasure (Right to be Forgotten).
For the standards-compliant public API, see OpenDSR.
Base Path
/dsr
Authentication
All endpoints require an authenticated user session. These are admin-level operations.
Endpoints
Export User Data
GET /dsr/{user_id}/export
Generate a full personal data export for a user (GDPR Article 15 — Right to Access).
Path Parameters
| Parameter | Type | Description |
|---|---|---|
user_id | UUID | The user whose data to export |
Query Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
export_format | string | json | Export format: json or csv |
Response 200 OK
{
"user_id": "550e8400-e29b-41d4-a716-446655440000",
"export_date": "2026-02-27T16:00:00Z",
"format": "json",
"data": {
"user_profile": { ... },
"comments": [ ... ],
"audit_logs": [ ... ],
"access_requests": [ ... ]
}
}
The export collects PII-bearing data across all platform entities: user profiles, comments, audit log entries, access requests, quality check attributions, and meeting participation records.
Erasure Dry Run
GET /dsr/{user_id}/erasure/dry-run
Preview what an erasure operation would affect without making any changes. Use this to verify scope before executing an irreversible erasure.
Path Parameters
| Parameter | Type | Description |
|---|---|---|
user_id | UUID | The user whose data to preview |
Response 200 OK
{
"user_id": "550e8400-e29b-41d4-a716-446655440000",
"records_to_delete": 42,
"records_to_anonymize": 128,
"total_affected": 170
}
Execute Erasure
POST /dsr/{user_id}/erasure/execute
Execute an irreversible data erasure operation (GDPR Article 17 — Right to be Forgotten).
This operation is permanent and cannot be undone. Always run a dry run first.
Path Parameters
| Parameter | Type | Description |
|---|---|---|
user_id | UUID | The user whose data to erase |
Request Body
{
"confirm_irreversible": true
}
| Field | Type | Required | Description |
|---|---|---|---|
confirm_irreversible | boolean | Yes | Must be true to proceed |
Response 200 OK
{
"user_id": "550e8400-e29b-41d4-a716-446655440000",
"deleted": 42,
"anonymized": 128,
"total_affected": 170,
"executed_at": "2026-02-27T16:05:00Z"
}
Error Responses
| Status | Description |
|---|---|
400 | confirm_irreversible not set to true |
Related
- OpenDSR API — Standards-compliant public DSR submission API
- DSR User Guide — End-user documentation for DSR workflows