Elenca le revisioni di una connessione

GET /v1/connections/{connection_id}/revisions · autorizzazione connections:read

Elenca le revisioni di una connessione enterprise (SAML o OIDC), dalla più recente: la bozza in attesa (al massimo una) e le revisioni pubblicate o scartate negli ultimi 90 giorni.

Su una connessione attiva, una modifica critica per la sicurezza non viene applicata direttamente. Diventa una revisione in bozza e la configurazione attiva resta invariata finché non testi e pubblichi la bozza:

Testa una bozza con Testa una connessione e il suo revision_id, poi pubblicala. Una nuova bozza scarta la precedente (discard_reason: superseded).

Una revisione mostra solo i nuovi valori non segreti (changes). Un nuovo client secret OIDC compare solo come client_secret_change (keep, replace o clear); il secret e i suoi ultimi caratteri non vengono mai restituiti. Chi ha creato o deciso una revisione è registrato nel log di audit di gestione (connection.revision_created, connection.revision_published), non qui.

Richiesta

Campo Tipo Obbligatorio Descrizione
connection_id path sì ID della connessione enterprise (conn_…).
limit query no Dimensione della pagina, da 1 a 100 (predefinito 20).
after query no Cursore da list_metadata.after. Il cursore funziona solo per la connessione che l'ha prodotto.

L'elenco è paginato solo in avanti: before e order non sono supportati (422).

Risposta

200 OK:

{
  "data": [
    {
      "id": "connrev_01j9xr8c2d4e6f8g0h2j4k6m8n",
      "connection_id": "conn_01j9xp6q0r1s5t7v9w1x3y5z7b",
      "protocol": "saml",
      "kind": "sp_host",
      "status": "draft",
      "discard_reason": null,
      "created_at": "2026-10-28T10:00:00Z",
      "decided_at": null,
      "purge_after": null,
      "superseded_revision_id": null,
      "changes": {
        "sp_host": "login.example.com",
        "idp_entity_id": null,
        "idp_sso_url": null,
        "idp_slo_url": null,
        "certificate_fingerprints": [],
        "mfa_authn_context_values": null,
        "issuer": null,
        "client_id": null,
        "client_auth_method": null,
        "provider_profile": null,
        "client_secret_change": null
      },
      "latest_test": {
        "test_id": "conntest_01j9xr4a6b8c0d2e4f6g8h0j2k",
        "status": "passed",
        "failure_reason": null,
        "started_at": "2026-10-28T10:05:00Z",
        "completed_at": "2026-10-28T10:06:00Z"
      }
    }
  ],
  "list_metadata": { "before": null, "after": null }
}
Campo Descrizione
kind configuration (modifica del provider di identità o del client OIDC) oppure sp_host (migrazione dell'host SP).
status draft (in attesa di test e pubblicazione), published oppure discarded.
decided_at / purge_after Quando la revisione è stata pubblicata o scartata, e quando viene eliminata (90 giorni dopo); null per una bozza.
changes I nuovi valori. I campi che la revisione non modifica sono null.
latest_test L'ultimo test di accesso di questa revisione nelle ultime 24 ore, oppure null. La pubblicazione richiede un test passed.

Errori

HTTP code Quando
400 invalid_cursor Il cursore è malformato oppure appartiene a un'altra connessione o a un'altra query.
401 unauthenticated La credenziale manca, non è valida o è stata revocata.
403 insufficient_permissions La credenziale non ha connections:read.
404 not_found La connessione non esiste in questo ambiente oppure non è una connessione enterprise.
422 validation_failed Un parametro di query non è valido (ad esempio limit superiore a 100, oppure before).
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

curl "https://api.eu.keenauth.com/v1/connections/conn_01j9xp6q0r1s5t7v9w1x3y5z7b/revisions?limit=20" \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY"
keenauth connections revisions list conn_01j9xp6q0r1s5t7v9w1x3y5z7b --limit 20