Sostituire le associazioni di attributi di una connessione

PUT /v1/connections/{connection_id}/attribute-mappings · permesso connections:write

Sostituisce l'intera lista di associazioni di attributi di una connessione aziendale. L'ordine delle regole non conta; la risposta è ordinata per destinazione. If-Match è obbligatorio: senza di esso la richiesta fallisce con 428; se la lista è cambiata dalla tua ultima lettura (o il valore non corrisponde), la richiesta fallisce con 412 e non viene scritto nulla. Inviare la stessa lista non scrive nulla. La modifica si applica dall'accesso successivo e non invalida l'ultimo test di connessione superato. La scrittura viene registrata nell'audit come connection.attribute_mappings_replaced (destinazioni aggiunte, rimosse e modificate); i valori degli attributi degli accessi non vengono mai scritti nel registro di audit.

Richiesta

Campo Tipo Obbligatorio Descrizione
connection_id percorso sì ID della connessione aziendale (conn_…).
If-Match intestazione sì L'ETag dell'ultima lettura. Mancante: 428; obsoleto: 412.
attribute_mappings array sì La nuova lista completa, con al massimo 28 regole.
attribute_mappings[].target stringa sì email (obbligatorio in ogni lista), given_name, family_name, name, locale, zoneinfo, phone, groups oppure user_metadata.<key> (chiave [a-z0-9_]{1,40}; non sono ammessi i nomi di claim OIDC registrati né il prefisso idp_; al massimo 20 chiavi). Una regola per destinazione. Un'associazione non può scrivere app_metadata.
attribute_mappings[].source_name stringa sì Da 1 a 512 byte, senza caratteri di controllo o bidirezionali, senza spazi iniziali o finali.
attribute_mappings[].source_name_format stringa | null no NameFormat SAML (URI assoluto). Un nome sorgente può essere letto con un solo formato.
attribute_mappings[].overwrite stringa sì always, if_empty oppure never.
attribute_mappings[].profile stringa no Nome del profilo predefinito; generic se omesso.

Risposta

200 OK con l'elenco memorizzato (vedi Recuperare le associazioni di attributi) e il nuovo ETag.

Errori

HTTP code Quando
404 not_found La connessione non esiste in questo ambiente o non è una connessione aziendale.
409 conflict Il protocollo della connessione non prevede associazioni di attributi (LDAP).
412 precondition_failed If-Match non corrisponde alla versione corrente, oppure l'elenco è stato modificato nel frattempo.
422 validation_failed Una regola viola le regole sopra indicate. Ogni regola non valida è un elemento di errors[] che punta a /attribute_mappings/<index>/<field>, oppure a /attribute_mappings per le regole di elenco (email_required, too_many_metadata_keys).
428 precondition_required L'intestazione If-Match è mancante.
400 unknown_field Il corpo contiene un campo sconosciuto.
401 unauthenticated La credenziale è assente, non valida o revocata.
403 insufficient_permissions La credenziale non ha il permesso richiesto.
429 rate_limited È stato superato il limite di frequenza; riprova dopo il periodo indicato da Retry-After.
503 service_unavailable Una dipendenza è temporaneamente non disponibile; riprova dopo il periodo indicato da Retry-After.

Esempio

curl -X PUT "https://api.eu.keenauth.com/v1/connections/conn_01j9xp6q0r1s5t7v9w1x3y5z7b/attribute-mappings" \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -H 'If-Match: "6f1c…"' \
  -d '{"attribute_mappings":[{"target":"email","source_name":"email","overwrite":"always"},{"target":"user_metadata.department","source_name":"department","overwrite":"if_empty"}]}'
keenauth connections attribute-mappings put conn_01j9xp6q0r1s5t7v9w1x3y5z7b --data @mappings.json --if-match '"6f1c…"'