
# Activer une connexion

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

Définit le `status` de la connexion sur `active`. Le corps de la requête est facultatif et ne contient aucun champ. L'opération est idempotente : si la connexion a déjà ce statut, rien n'est écrit, la version reste inchangée et la connexion actuelle est renvoyée. `If-Match` n'est pas utilisé ; si un autre écrivain modifie la connexion au même moment, l'appel est retenté quelques fois. Activer une connexion `enterprise` (SAML ou OIDC) exige un test de connexion réussi au cours des 24 dernières heures, couvrant la configuration de protocole actuelle et les `allowed_email_domains` que la connexion aura ; sinon, l'appel renvoie `409 connection_test_required` et rien n'est écrit. Si la vérification ne peut pas être effectuée, la connexion n'est pas activée et l'appel renvoie `503`. Les autres types de connexion ne sont pas vérifiés.

## Requête

| Champ | Type | Obligatoire | Description |
|---|---|---|---|
| `connection_id` | string | oui | Identifiant de la connexion (`conn_…`). |
| `Idempotency-Key` | header | non | Clé facultative (16 à 64 caractères) qui rend sûre une requête relancée. |

Le corps est facultatif ; s'il est présent, il doit être `{}`.

## Réponse

`200 OK` avec la connexion et son `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"
}
```

## Erreurs

| HTTP | code | Quand |
|---|---|---|
| 400 | `unknown_field` | Le corps contient un champ inconnu. |
| 404 | `not_found` | La connexion n'existe pas ou appartient à un autre environnement. |
| 409 | `connection_test_required` | Une connexion `enterprise` n'a pas de test réussi de sa configuration actuelle au cours des 24 dernières heures. Effectuez un test de connexion, puis réessayez. |
| 412 | `precondition_failed` | La connexion a continué à changer simultanément ; réessayez. |
| 401 | `unauthenticated` | L'identifiant est absent, invalide ou révoqué. |
| 403 | `insufficient_permissions` | L'identifiant ne dispose pas de l'autorisation requise. |
| 429 | `rate_limited` | La limite de débit a été dépassée ; réessayez après la durée indiquée par `Retry-After`. |
| 503 | `service_unavailable` | Une dépendance est temporairement indisponible ; réessayez après la durée indiquée par `Retry-After`. |

## Exemple

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