Skip to main content

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

ParameterTypeDescription
user_idUUIDThe user whose data to export

Query Parameters

ParameterTypeDefaultDescription
export_formatstringjsonExport 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

ParameterTypeDescription
user_idUUIDThe 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).

caution

This operation is permanent and cannot be undone. Always run a dry run first.

Path Parameters

ParameterTypeDescription
user_idUUIDThe user whose data to erase

Request Body

{
"confirm_irreversible": true
}
FieldTypeRequiredDescription
confirm_irreversiblebooleanYesMust 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

StatusDescription
400confirm_irreversible not set to true