
# Activar una conexión

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

Establece el `status` de la conexión en `active`. El cuerpo de la solicitud es opcional y no tiene campos. La operación es idempotente: si la conexión ya tiene este estado, no se escribe nada, la versión no cambia y se devuelve la conexión actual. No se usa `If-Match`; si otro escritor modifica la conexión en el mismo momento, la llamada se reintenta algunas veces. Activar una conexión `enterprise` (SAML u OIDC) requiere una prueba de inicio de sesión exitosa en las últimas 24 horas que haya cubierto la configuración de protocolo actual y los `allowed_email_domains` que tendrá la conexión; de lo contrario, la llamada devuelve `409 connection_test_required` y no se escribe nada. Si no es posible realizar la comprobación, la conexión no se activa y la llamada devuelve `503`. Los demás tipos de conexión no se verifican.

## Solicitud

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

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

## Respuesta

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

```json
{
  "id": "conn_0k3v8m1q2x9dz4h7s5t6w0y1ab",
  "key": "google",
  "type": "social",
  "strategy": "google",
  "name": "Google",
  "display_name": "Sign in with Google",
  "status": "active",
  "org_id": null,
  "allowed_email_domains": [],
  "allow_external_domains": false,
  "jit_mode": null,
  "email_trust": null,
  "default_role_ids": [],
  "trust_idp_mfa": null,
  "allow_idp_initiated": null,
  "idp_initiated_default_application_id": null,
  "idp_initiated_allowed_application_ids": [],
  "settings": {},
  "created_at": "2026-10-05T09:30:00.123456Z",
  "updated_at": "2026-10-05T09:30:00.123456Z"
}
```

## Errores

| HTTP | código | Cuándo |
|---|---|---|
| 400 | `unknown_field` | El cuerpo contiene un campo. |
| 404 | `not_found` | La conexión no existe o pertenece a otro entorno. |
| 409 | `connection_test_required` | Una conexión `enterprise` no tiene una prueba exitosa de su configuración actual en las últimas 24 horas. Ejecute una prueba de inicio de sesión y, después, reintente. |
| 412 | `precondition_failed` | La conexión siguió cambiando de forma concurrente; reintente. |
| 401 | `unauthenticated` | La credencial falta, no es válida o ha sido 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:activate \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY"
```
