API REST (Desarrolladores)
Politica de Privacidad

Endpoints Politica de Privacidad

Endpoints para generar, editar y publicar politicas de privacidad conforme al Art. 14 ter de la Ley 21.719.

Todos los endpoints requieren autenticacion JWT. El modulo esta disponible en todos los planes (feature flag: PRIVACY_POLICY).

Generar politica

POST /api/v1/privacy-policy/generate

Genera automaticamente una politica de privacidad a partir de los datos del RAT, configuracion del tenant y entidades legales. La politica se crea en estado DRAFT.

Body:

{
  "legalEntityId": "ent_xyz789",
  "language": "es"
}
CampoTipoRequeridoDescripcion
legalEntityIdstringNoEntidad legal especifica (default: entidad principal)
languagestringNoIdioma de la politica (default: es)

Respuesta (201):

{
  "success": true,
  "data": {
    "id": "pol_abc123",
    "version": 1,
    "status": "DRAFT",
    "content": {
      "responsable": { "title": "Identidad del responsable", "content": "..." },
      "finalidades": { "title": "Finalidades del tratamiento", "content": "..." },
      "basesLegales": { "title": "Bases legales", "content": "..." }
    },
    "completeness": {
      "filled": 10,
      "total": 12,
      "percentage": 83
    },
    "createdAt": "2026-03-09T10:00:00Z"
  }
}
⚠️

El campo completeness indica cuantas secciones tienen datos suficientes. Completa los modulos faltantes (RAT, CMP, Mapa de Datos) para alcanzar el 100%.

Obtener politica

GET /api/v1/privacy-policy/:id

Retorna el detalle completo de una version de la politica.

curl -X GET https://api.dpolab.com/api/v1/privacy-policy/pol_abc123 \
  -H "Authorization: Bearer {token}"

Respuesta (200):

{
  "success": true,
  "data": {
    "id": "pol_abc123",
    "version": 1,
    "status": "DRAFT",
    "language": "es",
    "content": {},
    "customSections": {},
    "customTitle": null,
    "customIntro": null,
    "legalEntityId": "ent_xyz789",
    "publishedAt": null,
    "publishedBy": null,
    "publishNotes": null,
    "createdBy": "usr_001",
    "updatedBy": "usr_001",
    "createdAt": "2026-03-09T10:00:00Z",
    "updatedAt": "2026-03-09T10:00:00Z"
  }
}

Obtener politica actual

GET /api/v1/privacy-policy/current

Retorna la politica publicada mas reciente. Si no hay ninguna publicada, retorna el ultimo borrador.

curl -X GET https://api.dpolab.com/api/v1/privacy-policy/current \
  -H "Authorization: Bearer {token}"

Listar versiones

GET /api/v1/privacy-policy/versions

Retorna el historial de versiones de la politica (max 50).

curl -X GET https://api.dpolab.com/api/v1/privacy-policy/versions \
  -H "Authorization: Bearer {token}"

Respuesta (200):

{
  "success": true,
  "data": [
    {
      "id": "pol_abc123",
      "version": 2,
      "status": "PUBLISHED",
      "publishedAt": "2026-03-15T14:00:00Z",
      "publishedBy": "usr_001",
      "publishNotes": "Actualizada con nuevas actividades"
    },
    {
      "id": "pol_abc122",
      "version": 1,
      "status": "ARCHIVED",
      "publishedAt": "2026-02-01T10:00:00Z",
      "publishedBy": "usr_001",
      "publishNotes": "Version inicial"
    }
  ]
}

Actualizar politica

PATCH /api/v1/privacy-policy/:id

Permite personalizar el contenido de una politica en estado DRAFT.

Body:

{
  "customTitle": "Politica de Privacidad de Ejemplo SpA",
  "customIntro": "En Ejemplo SpA nos comprometemos con la proteccion de tus datos personales...",
  "customSections": {
    "responsable": { "visible": true },
    "cookies": { "visible": false }
  }
}
CampoTipoRequeridoDescripcion
customTitlestringNoTitulo personalizado (max 500 caracteres)
customIntrostringNoIntroduccion personalizada (max 5000 caracteres)
customSectionsobjectNoConfiguracion de visibilidad/contenido por seccion

Respuesta (200):

{
  "success": true
}
⚠️

Solo se pueden editar politicas en estado DRAFT. Para modificar una politica publicada, genera una nueva version.

Publicar politica

POST /api/v1/privacy-policy/:id/publish

Publica la politica e inicia automaticamente un flujo de aprobacion (workflow).

Body:

{
  "notes": "Version actualizada con nuevas actividades del RAT"
}
CampoTipoRequeridoDescripcion
notesstringNoNotas de publicacion (max 2000 caracteres)

Respuesta (200):

{
  "success": true,
  "data": {
    "workflowStarted": true,
    "workflowInstanceId": "wf_inst_789",
    "message": "Politica enviada a aprobacion"
  }
}

La publicacion siempre pasa por un workflow de aprobacion. En el plan Starter, es una aprobacion simple por DPO/Owner. En Professional+, se usa el workflow configurado por el tenant.

Ver tambien