
# Ripristina una connessione eliminata

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

Riporta in vita una connessione eliminata. Una connessione eliminata può essere ripristinata entro 30 giorni; in questo periodo non viene elencata, non può essere letta (`404`) e non può essere usata per accedere. Dopo 30 giorni viene eliminata in modo permanente.

La connessione ripristinata torna con le impostazioni precedenti e con `status` = `inactive`. Non viene mai attivata automaticamente: chiama `:activate` quando sei pronto (per una connessione enterprise, il requisito di test e la quota del piano vengono verificati in quel punto). Gli elenchi di connessioni delle applicazioni e le mappature dei ruoli della connessione vengono rimossi quando la connessione viene eliminata e non vengono ripristinati.

Il corpo della richiesta è facoltativo e non ha campi. L'operazione è idempotente: se la connessione non è eliminata, non viene scritto nulla e viene restituita la connessione attuale.

## 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": "acme-saml",
  "type": "enterprise",
  "strategy": "saml",
  "name": "Acme SAML",
  "display_name": null,
  "status": "inactive",
  "org_id": "org_0k3v8m1q2x9dz4h7s5t6w0y1ac",
  "allowed_email_domains": ["acme.example"],
  "allow_external_domains": false,
  "jit_mode": "create",
  "email_trust": false,
  "default_role_ids": [],
  "trust_idp_mfa": false,
  "allow_idp_initiated": false,
  "idp_initiated_default_application_id": null,
  "idp_initiated_allowed_application_ids": [],
  "settings": {},
  "created_at": "2026-10-05T09:30:00.123456Z",
  "updated_at": "2026-10-26T17:00:00.123456Z"
}
```

## Errori

| HTTP | codice | Quando |
|---|---|---|
| 400 | `unknown_field` | Il corpo contiene un campo. |
| 404 | `not_found` | La connessione non esiste, appartiene a un altro ambiente o è stata eliminata più di 30 giorni fa. |
| 409 | `conflict` | Un'altra connessione usa ora la stessa `key` o `name` (oppure lo slot singolo di passkey o di provider social), oppure l'organizzazione proprietaria è stata eliminata. |
| 403 | `quota_exceeded` | L'ambiente ha già raggiunto il numero massimo di connessioni. |
| 401 | `unauthenticated` | La credenziale è mancante, non valida o revocata. |
| 403 | `insufficient_permissions` | La credenziale non ha l'autorizzazione richiesta. |
| 429 | `rate_limited` | È stato superato il limite di frequenza; riprova dopo il periodo indicato in `Retry-After`. |
| 503 | `service_unavailable` | Una dipendenza non è temporaneamente disponibile; riprova dopo il periodo indicato in `Retry-After`. |

## Esempio

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

CLI: `keenauth connections restore conn_0k3v8m1q2x9dz4h7s5t6w0y1ab`
