
# Verbindungen einer Anwendung ersetzen

`PUT /v1/applications/{application_id}/connections` · Berechtigungen `applications:write` und `connections:write`

Ersetzt in einem Schritt die gesamte Liste der auf der Anwendung aktivierten Verbindungen. Die Reihenfolge von `connection_ids` ist die Reihenfolge der Schaltflächen auf der gehosteten Anmeldeseite; eine leere Liste deaktiviert alle Verbindungen. Jede Verbindung muss in derselben Umgebung existieren: Eine Verbindung einer anderen Umgebung wird wie eine nicht existierende behandelt (`422` unter `/connection_ids`), und es wird nichts geschrieben. Wenn Sie die Liste senden, die die Anwendung bereits hat, ändert sich nichts und die Version bleibt erhalten. Die Änderung wird als `application.updated` im Verwaltungs-Audit-Log protokolliert und als Ereignis `application_changed` veröffentlicht; das Entfernen einer Verbindung wirkt sich bei der nächsten Anmeldung aus.

## Anfrage

**Header**: `If-Match: "<version>"` (optional). Mit `If-Match` wird die Liste nur geschrieben, wenn die Anwendung noch in dieser Version vorliegt (andernfalls `412`); ohne ihn wird die Liste unabhängig von der Version geschrieben. Senden Sie einen `Idempotency-Key`-Header, damit Wiederholungen sicher sind.

| Parameter | In | Erforderlich | Beschreibung |
|---|---|---|---|
| `application_id` | path | ja | ID der Anwendung mit dem Präfix `app_`. |

**Body**

| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
| `connection_ids` | array of string | ja | IDs der Verbindungen (`conn_…`), eindeutig, höchstens 100, in der Reihenfolge der Schaltflächen. |

## Antwort

`200 OK` mit der Anwendung und ihrem neuen `ETag`.

## Fehler

Jeder Fehler ist ein `application/problem+json`-Body mit einem stabilen `code`.

| HTTP | `code` | Wann |
|---|---|---|
| 400 | `malformed_request`, `unknown_field` | Der Body ist kein gültiges JSON oder enthält ein unbekanntes Feld. |
| 401 | `unauthenticated` | Der API-Schlüssel fehlt, ist ungültig oder widerrufen. |
| 403 | `insufficient_permissions` | Der Schlüssel besitzt `applications:write` oder `connections:write` nicht. |
| 404 | `not_found` | Die Anwendung existiert in dieser Umgebung nicht (oder die ID ist fehlerhaft). |
| 412 | `precondition_failed` | Die Version in `If-Match` ist veraltet. |
| 422 | `validation_failed` | `connection_ids` fehlt, enthält mehr als 100 Einträge, eine fehlerhafte oder doppelte ID oder eine Verbindung, die nicht in dieser Umgebung liegt. |
| 429 | `rate_limited` | Das Ratenlimit wurde überschritten; beachten Sie `Retry-After`. |
| 503 | `service_unavailable` | Eine Abhängigkeit ist vorübergehend nicht verfügbar; wiederholen Sie die Anfrage später. |

## Beispiel

```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` (um alle Verbindungen zu deaktivieren, senden Sie `{"connection_ids":[]}` mit `--data -`)
