
# Restaurar una conexión eliminada

`POST /v1/connections/{connection_id}:restore` · permiso `connections:write`

Recupera una conexión eliminada. Una conexión eliminada puede restaurarse durante 30 días; durante ese tiempo no aparece en las listas, no puede leerse (`404`) y no puede usarse para iniciar sesión. Pasados 30 días, se elimina de forma permanente.

La conexión restaurada vuelve con su configuración anterior y `status` = `inactive`. Nunca se activa automáticamente: llame a `:activate` cuando esté lista (en el caso de una conexión empresarial, el requisito de prueba y la cuota del plan se verifican en ese momento). Las listas de conexiones de aplicaciones y las asignaciones de roles de la conexión se eliminan al borrar la conexión y no se recuperan.

El cuerpo de la solicitud es opcional y no tiene campos. La operación es idempotente: si la conexión no está eliminada, no se escribe nada y se devuelve la conexión actual.

## Solicitud

| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| `connection_id` | string | sí | Identificador de la conexión (`conn_…`). |
| `Idempotency-Key` | header | no | Clave opcional (de 16 a 64 caracteres) que hace segura una solicitud reintentada. |

El cuerpo es opcional; si está presente, debe ser `{}`.

## Respuesta

`200 OK` con la conexión y su `ETag`.

```json
{
  "id": "conn_0k3v8m1q2x9dz4h7s5t6w0y1ab",
  "key": "acme-saml",
  "type": "enterprise",
  "strategy": "saml",
  "name": "Acme SAML",
  "display_name": null,
  "status": "inactive",
  "org_id": "org_0k3v8m1q2x9dz4h7s5t6w0y1ac",
  "allowed_email_domains": ["acme.example"],
  "allow_external_domains": false,
  "jit_mode": "create",
  "email_trust": false,
  "default_role_ids": [],
  "trust_idp_mfa": false,
  "allow_idp_initiated": false,
  "idp_initiated_default_application_id": null,
  "idp_initiated_allowed_application_ids": [],
  "settings": {},
  "created_at": "2026-10-05T09:30:00.123456Z",
  "updated_at": "2026-10-26T17:00:00.123456Z"
}
```

## Errores

| HTTP | código | Cuándo |
|---|---|---|
| 400 | `unknown_field` | El cuerpo contiene un campo. |
| 404 | `not_found` | La conexión no existe, pertenece a otro entorno o fue eliminada hace más de 30 días. |
| 409 | `conflict` | Otra conexión ahora usa la misma `key` o el mismo `name` (o la única ranura de proveedor de clave de acceso o social), o la organización propietaria fue eliminada. |
| 403 | `quota_exceeded` | El entorno ya tiene el número máximo de conexiones. |
| 401 | `unauthenticated` | La credencial falta, no es válida o fue revocada. |
| 403 | `insufficient_permissions` | La credencial no tiene el permiso requerido. |
| 429 | `rate_limited` | Se superó el límite de solicitudes; reintente después del período indicado en `Retry-After`. |
| 503 | `service_unavailable` | Una dependencia no está disponible temporalmente; reintente después del período indicado en `Retry-After`. |

## Ejemplo

```bash
curl -X POST https://api.eu.keenauth.com/v1/connections/conn_0k3v8m1q2x9dz4h7s5t6w0y1ab:restore \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY"
```

CLI: `keenauth connections restore conn_0k3v8m1q2x9dz4h7s5t6w0y1ab`
