
# Remplacer les connexions d'une application

`PUT /v1/applications/{application_id}/connections` · autorisations `applications:write` et `connections:write`

Remplace en une seule étape la liste complète des connexions activées sur l'application. L'ordre de `connection_ids` est l'ordre des boutons sur la page de connexion hébergée ; une liste vide désactive toutes les connexions. Chaque connexion doit exister dans le même environnement : une connexion d'un autre environnement est traitée comme une connexion inexistante (`422` sur `/connection_ids`) et rien n'est écrit. Envoyer la liste que l'application possède déjà ne change rien et conserve la version. La modification est écrite dans le journal d'audit de gestion sous `application.updated` et publiée sous forme d'événement `application_changed` ; la suppression d'une connexion prend effet à la prochaine connexion.

## Requête

**En-têtes** : `If-Match: "<version>"` (facultatif). Avec `If-Match`, la liste n'est écrite que si l'application est toujours à cette version (`412` sinon) ; sans lui, la liste est écrite quelle que soit la version. Envoyez un en-tête `Idempotency-Key` pour rendre les nouvelles tentatives sûres.

| Paramètre | Dans | Obligatoire | Description |
|---|---|---|---|
| `application_id` | path | oui | Identifiant de l'application, préfixé `app_`. |

**Corps**

| Champ | Type | Obligatoire | Description |
|---|---|---|---|
| `connection_ids` | tableau de chaînes | oui | Identifiants de connexion (`conn_…`), uniques, au maximum 100, dans l'ordre des boutons. |

## Réponse

`200 OK` avec l'application et son nouvel `ETag`.

## Erreurs

Chaque erreur est un corps `application/problem+json` avec un `code` stable.

| HTTP | `code` | Quand |
|---|---|---|
| 400 | `malformed_request`, `unknown_field` | Le corps n'est pas du JSON valide ou contient un champ inconnu. |
| 401 | `unauthenticated` | La clé d'API est absente, invalide ou révoquée. |
| 403 | `insufficient_permissions` | La clé ne dispose pas de `applications:write` ou de `connections:write`. |
| 404 | `not_found` | L'application n'existe pas dans cet environnement (ou l'identifiant est mal formé). |
| 412 | `precondition_failed` | La version dans `If-Match` est périmée. |
| 422 | `validation_failed` | `connection_ids` est absent, contient plus de 100 éléments, un identifiant mal formé ou répété, ou une connexion qui n'est pas dans cet environnement. |
| 429 | `rate_limited` | La limite de débit a été dépassée ; respectez `Retry-After`. |
| 503 | `service_unavailable` | Une dépendance est temporairement indisponible ; réessayez plus tard. |

## Exemple

```bash
curl -X PUT https://api.eu.keenauth.com/v1/applications/app_6f8d0cjgbmf0gtn2rg6pscp3cg/connections \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{"connection_ids":["conn_01h455vb4pex5vsknk084sn02q"]}'
```

CLI : `keenauth applications put-connections app_6f8d0cjgbmf0gtn2rg6pscp3cg --connection-ids conn_01h455vb4pex5vsknk084sn02q` (pour désactiver toutes les connexions, envoyez `{"connection_ids":[]}` avec `--data -`)
