
# Attiva una connessione

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

Imposta lo `status` della connessione su `active`. Il corpo della richiesta è facoltativo e non ha campi. L'operazione è idempotente: se la connessione ha già questo stato non viene scritto nulla, la versione resta invariata e viene restituita la connessione attuale. `If-Match` non viene usato; se un altro scrittore modifica la connessione nello stesso momento, la chiamata viene ritentata alcune volte. Attivare una connessione `enterprise` (SAML o OIDC) richiede un accesso di prova riuscito nelle ultime 24 ore che abbia coperto la configurazione del protocollo attuale e i `allowed_email_domains` che la connessione avrà; altrimenti la chiamata restituisce `409 connection_test_required` e non viene scritto nulla. Se il controllo non può essere eseguito, la connessione non viene attivata e la chiamata restituisce `503`. Gli altri tipi di connessione non vengono controllati.

## Richiesta

| Campo | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
| `connection_id` | string | sì | Identificatore della connessione (`conn_…`). |
| `Idempotency-Key` | header | no | Chiave facoltativa (16-64 caratteri) che rende sicura una richiesta ritentata. |

Il corpo è facoltativo; se presente deve essere `{}`.

## Risposta

`200 OK` con la connessione e il suo `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"
}
```

## Errori

| HTTP | code | Quando |
|---|---|---|
| 400 | `unknown_field` | Il corpo contiene un campo. |
| 404 | `not_found` | La connessione non esiste o appartiene a un altro ambiente. |
| 409 | `connection_test_required` | Una connessione `enterprise` non ha un test riuscito della configurazione attuale nelle ultime 24 ore. Esegui un accesso di prova, poi riprova. |
| 412 | `precondition_failed` | La connessione è cambiata di continuo durante la richiesta; riprova. |
| 401 | `unauthenticated` | La credenziale manca, non è valida o è stata revocata. |
| 403 | `insufficient_permissions` | La credenziale non ha l'autorizzazione richiesta. |
| 429 | `rate_limited` | È stato superato il limite di richieste; riprova dopo il periodo indicato in `Retry-After`. |
| 503 | `service_unavailable` | Una dipendenza non è disponibile temporaneamente; riprova dopo il periodo indicato in `Retry-After`. |

## Esempio

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