Solicitudes del titular
Lee una solicitud de derechos y confirma que la ejecutaste en tus sistemas.
El titular ejerce sus derechos desde el Centro de Privacidad y tu organización gestiona el caso desde el Portal. Estas operaciones permiten consultar sus antecedentes y confirmar la ejecución del derecho en tus propios sistemas.
Titular → crea la solicitud (Centro de Privacidad)
Consensa → webhook data_subject_request.created
Tu organización → gestiona y resuelve el caso (Portal)
Consensa → webhook data_subject_request.resolved
Tu backend → GET /v1/data-subject-requests/{requestId} ¿qué hay que ejecutar?
Tu backend → ejecuta el derecho en tus sistemas
Tu backend → POST .../fulfillment-confirmations lo declaraTodas las operaciones de esta guía requieren el scope dsr:manage.
Leer el caso
curl "$CONSENSA_API_URL/v1/data-subject-requests/request-9f2" \
--header "Authorization: Bearer $CONSENSA_API_KEY"{
"request": {
"requestId": "request-9f2",
"customerId": "customer-4821",
"rightType": "suppression",
"status": "resolved",
"requestVersion": 3,
"information": [],
"attachments": [],
"intake": {
"scopeDescription": null,
"requestedCorrection": null,
"grounds": "Ya no soy cliente.",
"blockingRelatedRight": null
},
"requestedAt": 1787616000000,
"dueAt": 1790208000000,
"extendedDueAt": null,
"resolution": {
"outcome": "resolved",
"resolvedAt": 1787700000000,
"summary": "Solicitud aceptada.",
"reason": null
},
"fulfillmentRequired": true,
"fulfillment": null
}
}La proyección incluye requestVersion, los intercambios de antecedentes en information y los metadatos de archivos en attachments. Cada intercambio lleva su requestVersion, type (additional_information_requested o additional_information_received), actorType, message y occurredAt. Cada archivo lleva attachmentId, requestVersion del acto que lo incorporó, uploadedBy, filename, mimeType, sizeBytes, contentSha256 y createdAt.
Estos textos y nombres pueden contener datos personales: consúltalos sólo desde tu backend autorizado. La respuesta excluye referencias de actores, sesiones, claves de almacenamiento, comunicaciones de email e internos regulatorios.
rightType puede ser access, rectification, suppression, opposition, portability o blocking. El customerId es el mismo identificador de cliente que usa el resto de la API.
fulfillmentRequired es el campo que decide si te toca actuar. Es true cuando el caso quedó resuelto o parcialmente resuelto y ese derecho exige una ejecución externa. Mientras fulfillment sea null, la confirmación sigue pendiente.
Descargar un adjunto
curl "$CONSENSA_API_URL/v1/data-subject-requests/request-9f2/attachments/attachment-4b1" \
--header "Authorization: Bearer $CONSENSA_API_KEY" \
--output antecedentes.pdfEl attachmentId se obtiene del detalle del caso. El archivo debe pertenecer tanto a la solicitud como a tu tenant; cualquier discrepancia devuelve 404. La respuesta conserva el tipo del archivo y utiliza Cache-Control: private, no-store.
Confirmar la ejecución
curl --request POST "$CONSENSA_API_URL/v1/data-subject-requests/request-9f2/fulfillment-confirmations" \
--header "Authorization: Bearer $CONSENSA_API_KEY" \
--header "Content-Type: application/json" \
--header "Idempotency-Key: dsr-fulfillment-request-9f2" \
--data '{
"outcome": "confirmed",
"performedAt": 1787701000000,
"sourceSystem": "crm-clientes",
"sourceReference": "ticket-88213",
"summary": "Datos eliminados del CRM y del data warehouse."
}'Si la ejecución fue parcial, outcome es partially_confirmed y partialDetails pasa a ser obligatorio:
{
"outcome": "partially_confirmed",
"performedAt": 1787701000000,
"partialDetails": "Pendiente la eliminación en los respaldos fríos, programada para el cierre de mes.",
"sourceSystem": "crm-clientes",
"sourceReference": "ticket-88213"
}partialDetails está prohibido con outcome: "confirmed".
Qué significa esta confirmación
Consensa no valida que la acción haya ocurrido en tus sistemas. Registra tu declaración, con tu provenance y tu timestamp, y la conserva como hecho auditable. performedAt lo declaras tú y no puede estar en el futuro; recordedAt lo controla el servidor.
Es terminal y única por solicitud:
- un caso rechazado nunca puede recibir una confirmación de cumplimiento;
- una confirmación ya registrada no se reemplaza: un segundo intento con otro cuerpo responde
409.
Escribe summary y partialDetails sabiendo que forman parte del registro del caso.
Enterarte de los casos
Suscribe un endpoint a los eventos de solicitudes en Webhooks. created informa la apertura; review_started, additional_information_requested, additional_information_received y deadline_extended informan avances y aportes. resolved es la señal para leer el caso y ejecutar; fulfillment_confirmed comunica que esa ejecución externa quedó declarada.