> ## Documentation Index
> Fetch the complete documentation index at: https://docs.orbit.devotel.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Acuerdo de tratamiento de datos (GDPR Artículo 28)

> Ciclo de vida self-serve del Data Processing Agreement: previsualice la plantilla, acéptela con una e-firma escrita, descargue la copia ejecutada y rastree las actualizaciones de versión.

# Acuerdo de tratamiento de datos (DPA)

Devotel trata datos personales en su nombre como **encargado del tratamiento (processor)**, y usted es el **responsable del tratamiento (controller)**. El Artículo 28 del GDPR exige que esa relación se rija por un contrato por escrito — un Acuerdo de tratamiento de datos. Devotel expone ese contrato como un click-wrap self-serve para que usted pueda revisarlo, aceptarlo y archivarlo sin un traspaso legal manual.

Esta guía cubre el ciclo de vida completo: qué rige el DPA, cómo funciona `dpa_status`, cómo previsualizar la plantilla, cómo aceptarla, cómo descargar la copia ejecutada y qué ocurre cuando se publica una nueva versión de la plantilla.

> La aceptación es puramente un registro contractual. Nunca pone puerta al envío, la recepción ni ninguna otra capacidad del producto.

***

## Qué rige el DPA

El DPA obliga a Devotel con las obligaciones de encargado del tratamiento del Artículo 28(3) del GDPR. En términos sencillos, compromete a Devotel a:

* Tratar datos personales **solo siguiendo sus instrucciones documentadas**
* Mantener los datos **confidenciales** y protegidos con medidas de seguridad apropiadas
* Contratar **subencargados** solo bajo las condiciones que el acuerdo describe, y seguir siendo responsable de ellos
* **Asistirle** con las solicitudes de los interesados (la contraparte del [flujo DSAR](/compliance/dsar)) y con la notificación de brechas
* **Eliminar o devolver** los datos personales al final de la relación

Aceptar el DPA no cambia lo que Devotel hace con sus datos — esas obligaciones existen con o sin aceptación. La aceptación es el registro por escrito que el Artículo 28 requiere que usted, como responsable, mantenga. Devotel convierte ese registro en una e-firma escrita que puede completar desde el dashboard en un minuto, en lugar de un documento enrutado por compras.

La e-firma escrita es una aceptación click-wrap: usted escribe su nombre legal para firmar. Cada aceptación registra la versión de la plantilla, el nombre, correo y cargo del firmante, la marca de tiempo de aceptación y el método de aceptación (escribir-el-nombre). Ese registro es la evidencia legal de la attestación; el documento renderizado almacenado en la aceptación es la copia ejecutada canónica.

***

## Estados de `dpa_status`

Su organización está siempre en uno de dos estados, reportados por `GET /api/v1/compliance/dpa`:

| Estado         | Significado                                                                                                                  |
| -------------- | ---------------------------------------------------------------------------------------------------------------------------- |
| `not_accepted` | Sin aceptación de DPA en el registro. Es el predeterminado para toda organización nueva.                                     |
| `accepted`     | Hay una aceptación de DPA registrada. La respuesta incluye la versión aceptada, la marca de tiempo y los datos del firmante. |

Junto al estado, `GET /api/v1/compliance/dpa` devuelve una bandera **`needs_update`**. Es `true` cuando la versión de plantilla que su organización aceptó es más antigua que la versión de plantilla canónica actual — por ejemplo, usted aceptó `v1` y Devotel ha publicado desde entonces `v2`. La bandera es informativa: nada se bloquea y su aceptación existente sigue en el registro. Alimenta el banner del dashboard que ofrece la re-aceptación para que usted adopte la versión más nueva.

La forma de la respuesta:

```json theme={null}
{
  "dpa_status": "accepted",
  "dpa_accepted_version": "v1",
  "dpa_accepted_at": "2026-08-10T14:22:31.410Z",
  "dpa_signer_name": "Jane Roe",
  "dpa_signer_email": "jane@example.com",
  "dpa_signer_title": "General Counsel",
  "current_version": "v1",
  "needs_update": false
}
```

A diferencia del BAA de HIPAA, el DPA no tiene un término anual. Permanece aceptado hasta que se publica una versión de plantilla más nueva, momento en el que `needs_update` se vuelve `true` — nunca caduca por sí mismo.

***

## Previsualice la plantilla

Antes de aceptar, revise el texto exacto del acuerdo. `GET /api/v1/compliance/dpa/template` devuelve la plantilla renderizada con el nombre de su organización ya rellenado, para que usted lea el acuerdo finalizado en lugar de un documento lleno de marcadores de posición. Los campos que solo existen una vez que usted acepta — las marcas de tiempo de aceptación y la referencia del documento — aparecen como marcadores legibles de "se rellenan cuando usted acepta". Los campos del firmante aparecen como espacios en blanco que el dashboard rellena en vivo mientras usted escribe.

```bash theme={null}
curl "https://api.orbit.devotel.io/api/v1/compliance/dpa/template?version=v1" \
  -H "Authorization: Bearer sk_live_..."
```

Respuesta:

```json theme={null}
{
  "version": "v1",
  "controller_name": "Acme Health Ltd",
  "format": "markdown",
  "body": "# Data Processing Agreement\n\nThis Data Processing Agreement..."
}
```

Cualquier rol de `admin` o superior puede previsualizar. La previsualización es idéntica para cada llamante de la organización y solo cambia cuando Devotel publica una nueva versión de plantilla.

***

## Acepte el DPA

La aceptación es solo para el owner — una firma legalmente vinculante no es una acción de nivel developer. `POST /api/v1/compliance/dpa/accept` toma la identidad del firmante y una attestación escrita:

```bash theme={null}
curl -X POST "https://api.orbit.devotel.io/api/v1/compliance/dpa/accept" \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "signer_name": "Jane Roe",
    "signer_email": "jane@example.com",
    "signer_title": "General Counsel",
    "typed_attestation": "Jane Roe"
  }'
```

| Campo               | Regla                                                                                                                                                                                                       |
| ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `signer_name`       | El nombre legal del firmante (2–200 caracteres).                                                                                                                                                            |
| `signer_email`      | Una dirección de correo válida.                                                                                                                                                                             |
| `signer_title`      | El cargo o título del firmante (2–200 caracteres).                                                                                                                                                          |
| `typed_attestation` | Debe **coincidir exactamente** con `signer_name`. El firmante re-escribe su nombre como firma; una discrepancia se rechaza con un `400` (esto también bloquea envíos automáticos de formularios en blanco). |
| `template_version`  | Opcional. Predeterminado a la versión canónica actual.                                                                                                                                                      |

En caso de éxito, el servidor:

1. Renderiza la plantilla con los datos del firmante, las marcas de tiempo de aceptación y una referencia de documento generada
2. Almacena el documento renderizado como la copia ejecutada canónica
3. Registra la aceptación en la organización — versión, marca de tiempo, firmante — y la añade a un historial de aceptaciones inmutable, de modo que las re-aceptaciones nunca borran el registro anterior
4. Escribe una entrada `compliance.dpa.accepted` en el log de auditoría — la entrada de auditoría es la evidencia legal de la attestación

La respuesta devuelve el nuevo estado más la referencia del documento:

```json theme={null}
{
  "dpa_status": "accepted",
  "dpa_accepted_version": "v1",
  "dpa_accepted_at": "2026-08-24T09:41:12.008Z",
  "dpa_signer_name": "Jane Roe",
  "dpa_signer_email": "jane@example.com",
  "dpa_signer_title": "General Counsel",
  "current_version": "v1",
  "needs_update": false,
  "dpa_id": "dpa_9f2k…"
}
```

La aceptación está limitada en tasa a un puñado de solicitudes por minuto; debe ser una acción deliberada, no un bucle programado.

***

## Descargue la copia ejecutada

Una vez que hay un DPA registrado, cualquier `admin` o superior puede recuperarlo para sus archivos, la auditoría de un cliente o un regulador:

```bash theme={null}
curl "https://api.orbit.devotel.io/api/v1/compliance/dpa/download" \
  -H "Authorization: Bearer sk_live_..."
```

La respuesta lleva una URL de descarga válida durante **24 horas**:

```json theme={null}
{
  "url": "https://storage.googleapis.com/…/dpa/org_…/dpa_….pdf?X-Goog-Signature=…",
  "expires_in_seconds": 86400
}
```

Comparta la URL dentro de esa ventana o descargue el archivo usted mismo y archívelo. Si aún no se ha aceptado ningún DPA, el endpoint devuelve `404`.

***

## Flujo del dashboard

El mismo ciclo de vida está disponible sin tocar la API en **Settings → Compliance → DPA**:

1. **Tarjeta de estado** — muestra `not_accepted` / `accepted`, la versión y fecha aceptadas, el firmante, y un banner cuando `needs_update` es `true`
2. **Previsualización de plantilla** — el acuerdo renderizado con el nombre de su organización rellenado
3. **Formulario de attestación** — nombre, correo, cargo y el campo de firma de escribir-el-nombre (solo owner)
4. **Descarga** — un enlace a la copia ejecutada una vez aceptada

***

## Preguntas frecuentes

**¿Qué ocurre cuando `needs_update` se vuelve `true`?**
Devotel publicó una versión de plantilla más nueva que la que usted aceptó. Su aceptación existente sigue totalmente en el registro y nada se bloquea. Para adoptar la nueva versión, previsualícela (el parámetro de consulta `version` predetermina a la versión actual), y luego acepte de nuevo con el mismo flujo. La nueva aceptación reemplaza los campos de estado, y la aceptación anterior permanece en el historial de aceptaciones inmutable.

**¿Re-aceptar requiere de nuevo el formulario completo?**
Sí. Cada aceptación es una firma escrita independiente — la attestación escrita debe coincidir con el nombre del firmante cada vez.

**¿Quién puede hacer qué?**

| Acción                       | `owner` | `admin` | `developer` / `viewer` / `billing` |
| ---------------------------- | :-----: | :-----: | :--------------------------------: |
| Leer el estado del DPA       |    Sí   |    Sí   |                 No                 |
| Previsualizar la plantilla   |    Sí   |    Sí   |                 No                 |
| Descargar la copia ejecutada |    Sí   |    Sí   |                 No                 |
| Aceptar / re-aceptar         |    Sí   |    No   |                 No                 |

**¿El DPA pone puerta a algo?**
No. La aceptación es un registro contractual. A diferencia del BAA, que pone puerta al modo HIPAA y a los envíos de PHI, el DPA nunca bloquea una capacidad del producto.

**¿Cuál es mi obligación como responsable más allá de aceptar?**
Aceptar el DPA satisface el requisito contractual del Artículo 28 por su parte. Determinar su base jurídica, configurar sus propios [controles de consentimiento y supresión](/compliance/consent-management), y responder a las solicitudes de los interesados (vea [DSAR](/compliance/dsar)) siguen siendo suyas. Para el orden en que esas piezas encajan, consulte [Montar una postura GDPR de punta a punta](/compliance/gdpr-posture-guide).

***

*Última actualización: agosto de 2026*
*Para preguntas sobre el DPA, contacte: [compliance@devotel.io](mailto:compliance@devotel.io)*
