Contratos DPA
Endpoints para gestionar contratos de encargo de tratamiento de datos personales (DPA) según Art. 15 bis de la Ley 21.719.
Todos los endpoints requieren autenticación JWT y el feature flag RAT activo en el plan del tenant.
Generar contrato desde plantilla
POST /api/v1/contracts/generateGenera un contrato prellenado a partir de una plantilla, un encargado de tratamiento y las actividades asociadas.
Body:
{
"processorId": "proc_abc123",
"templateId": "tpl_dpa01",
"activityIds": ["act_001", "act_002"],
"customFields": {
"encargado_rut": "77654321-0",
"encargado_email": "[email protected]",
"encargado_representante": "María García",
"plazo_contrato": "24 meses"
}
}Campos requeridos: processorId, templateId, activityIds (mínimo 1).
Respuesta (201):
{
"success": true,
"data": {
"contractId": "ctr_new456",
"type": "DPA",
"content": "<html>Contenido renderizado del contrato...</html>"
}
}El campo customFields permite sobreescribir variables de la plantilla. Las variables del tenant, encargado y actividades se completan automáticamente.
Listar contratos
GET /api/v1/contractsQuery params:
| Param | Tipo | Descripción |
|---|---|---|
status | string | Filtrar por estado: DRAFT, SENT, SIGNED, EXPIRED, TERMINATED |
type | string | Filtrar por tipo: DPA, CCT, ADDENDUM |
expiringSoon | string | "true" para contratos próximos a vencer |
page | number | Página (default: 1) |
limit | number | Registros por página (default: 20, máx: 100) |
curl -X GET "https://api.dpolab.com/api/v1/contracts?status=SIGNED" \
-H "Authorization: Bearer {token}"Respuesta (200):
{
"success": true,
"data": {
"contracts": [
{
"id": "ctr_abc123",
"type": "DPA",
"status": "SIGNED",
"processorId": "proc_abc123",
"signedAt": "2026-01-20T14:00:00Z",
"expiresAt": "2027-01-20T14:00:00Z",
"createdAt": "2026-01-15T10:00:00Z"
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 8,
"totalPages": 1
}
}
}Obtener detalle del contrato
GET /api/v1/contracts/:idcurl -X GET https://api.dpolab.com/api/v1/contracts/ctr_abc123 \
-H "Authorization: Bearer {token}"Respuesta (200):
{
"success": true,
"data": {
"id": "ctr_abc123",
"type": "DPA",
"status": "SIGNED",
"processorId": "proc_abc123",
"activityId": "act_001",
"templateId": "tpl_dpa01",
"content": "Contenido completo del contrato...",
"version": 1,
"signerName": "María García",
"signerEmail": "[email protected]",
"signerRut": "77654321-0",
"signedAt": "2026-01-20T14:00:00Z",
"expiresAt": "2027-01-20T14:00:00Z",
"createdAt": "2026-01-15T10:00:00Z",
"updatedAt": "2026-01-20T14:00:00Z"
}
}Actualizar contrato
PUT /api/v1/contracts/:idSolo se pueden editar contratos en estado DRAFT. Campos actualizables:
{
"content": "Contenido actualizado...",
"expiresAt": "2027-06-01T00:00:00Z",
"signerName": "Juan Pérez",
"signerEmail": "[email protected]",
"signerRut": "12345678-9"
}Todos los campos son opcionales.
Solo se pueden editar contratos en estado DRAFT. Contratos enviados o firmados no pueden modificarse.
Eliminar contrato
DELETE /api/v1/contracts/:idSolo se pueden eliminar contratos en estado DRAFT.
curl -X DELETE https://api.dpolab.com/api/v1/contracts/ctr_man789 \
-H "Authorization: Bearer {token}"Enviar contrato para firma
POST /api/v1/contracts/:id/sendEnvía el contrato al firmante por correo electrónico. El contrato debe estar en estado DRAFT.
Body:
{
"signerName": "María García",
"signerEmail": "[email protected]"
}Campos requeridos: signerName, signerEmail.
curl -X POST https://api.dpolab.com/api/v1/contracts/ctr_abc123/send \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{
"signerName": "María García",
"signerEmail": "[email protected]"
}'Respuesta (200):
{
"success": true,
"data": {
"id": "ctr_abc123",
"status": "SENT"
}
}Registrar firma
POST /api/v1/contracts/:id/signRegistra la firma del contrato. El contrato debe estar en estado SENT. La fecha de firma se establece automáticamente.
Body:
{
"signerName": "María García",
"signerRut": "12345678-9"
}Campos requeridos: signerName. signerRut es opcional.
Respuesta (200):
{
"success": true,
"data": {
"id": "ctr_abc123",
"status": "SIGNED",
"signedAt": "2026-03-09T14:00:00Z"
}
}Al firmar un contrato, el estado DPA del encargado de tratamiento (processing_processors) se actualiza automáticamente a SIGNED.
Renovar contrato
POST /api/v1/contracts/:id/renewCrea una nueva versión del contrato como borrador (DRAFT). Solo se pueden renovar contratos en estado SIGNED o EXPIRED. No requiere body.
curl -X POST https://api.dpolab.com/api/v1/contracts/ctr_abc123/renew \
-H "Authorization: Bearer {token}"Respuesta (201):
{
"success": true,
"data": {
"id": "ctr_renew001",
"version": 2,
"previousContractId": "ctr_abc123"
}
}Plantillas de Contratos
Listar plantillas
GET /api/v1/contracts/templatescurl -X GET "https://api.dpolab.com/api/v1/contracts/templates" \
-H "Authorization: Bearer {token}"Respuesta (200):
{
"success": true,
"data": {
"templates": [
{
"id": "tpl_dpa01",
"name": "Contrato de Encargo de Tratamiento (DPA)",
"type": "DPA",
"variables": [
{ "key": "plazo_contrato", "label": "Plazo del contrato" },
{ "key": "encargado_rut", "label": "RUT del encargado" }
],
"createdAt": "2026-01-01T00:00:00Z"
}
]
}
}Crear plantilla
POST /api/v1/contracts/templatesBody:
{
"name": "Acuerdo de Responsables Conjuntos",
"type": "CCT",
"content": "Contenido de la plantilla con {{variables}} de sustitución...",
"variables": [
{ "key": "serviceName", "label": "Nombre del servicio", "description": "Servicio contratado" },
{ "key": "dataCategories", "label": "Categorías de datos" }
]
}Campos requeridos: name, type, content.
Tipos válidos: DPA, CCT, ADDENDUM.
Actualizar plantilla
PUT /api/v1/contracts/templates/:idAcepta los mismos campos que la creación, todos opcionales.
Estados del contrato
| Estado | Descripción |
|---|---|
DRAFT | Borrador, editable |
SENT | Enviado al firmante |
SIGNED | Firmado |
EXPIRED | Vencido (fecha expiración superada) |
TERMINATED | Terminado anticipadamente |
Tipos de contrato
| Tipo | Descripción |
|---|---|
DPA | Contrato de Encargo de Tratamiento |
CCT | Cláusulas Contractuales Tipo (transferencia internacional) |
ADDENDUM | Adenda a contrato existente |
Ver también
- Módulo Contratos DPA — Guía funcional de gestión de contratos