Remplacer les correspondances d'attributs d'une connexion

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

Remplace la liste complète des correspondances d'attributs d'une connexion d'entreprise. L'ordre des règles n'a pas d'importance ; la réponse est classée par cible. If-Match est obligatoire : sans lui, la requête échoue avec 428 ; si la liste a changé depuis votre lecture (ou si la valeur ne correspond pas), la requête échoue avec 412 et rien n'est écrit. Envoyer la même liste n'écrit rien. La modification s'applique dès la connexion suivante et n'invalide pas le dernier test de connexion réussi. L'écriture est auditée sous connection.attribute_mappings_replaced (cibles ajoutées, supprimées et modifiées) ; les valeurs d'attributs issues des connexions ne sont jamais écrites dans le journal d'audit.

Requête

Champ Type Obligatoire Description
connection_id chemin oui ID de la connexion d'entreprise (conn_…).
If-Match en-tête oui L'ETag de la dernière lecture. Absent : 428 ; périmé : 412.
attribute_mappings tableau oui La nouvelle liste complète, 28 règles au maximum.
attribute_mappings[].target chaîne oui email (obligatoire dans toute liste), given_name, family_name, name, locale, zoneinfo, phone, groups ou user_metadata.<key> (clé [a-z0-9_]{1,40} ; les noms de revendications OIDC enregistrés et le préfixe idp_ sont interdits ; 20 clés au maximum). Une règle par cible. Une correspondance ne peut pas écrire app_metadata.
attribute_mappings[].source_name chaîne oui 1 à 512 octets, sans caractère de contrôle ni caractère bidirectionnel, sans espace en début ou en fin.
attribute_mappings[].source_name_format chaîne | null non NameFormat SAML (URI absolue). Un même nom source ne peut être lu qu'avec un seul format.
attribute_mappings[].overwrite chaîne oui always, if_empty ou never.
attribute_mappings[].profile chaîne non Nom du profil prédéfini ; generic si omis.

Réponse

200 OK avec la liste enregistrée (voir Obtenir les correspondances d'attributs) et le nouvel ETag.

Erreurs

HTTP code Cas
404 not_found La connexion n'existe pas dans cet environnement ou n'est pas une connexion d'entreprise.
409 conflict Le protocole de la connexion n'a pas de correspondances d'attributs (LDAP).
412 precondition_failed If-Match ne correspond pas à la version actuelle, ou la liste a été modifiée entre-temps.
422 validation_failed Une règle ne respecte pas les règles ci-dessus. Chaque règle non conforme est un élément errors[] pointant vers /attribute_mappings/<index>/<field>, ou vers /attribute_mappings pour les règles de liste (email_required, too_many_metadata_keys).
428 precondition_required L'en-tête If-Match est absent.
400 unknown_field Le corps de la requête contient un champ inconnu.
401 unauthenticated L'identifiant est absent, invalide ou révoqué.
403 insufficient_permissions L'identifiant ne dispose pas de l'autorisation requise.
429 rate_limited La limite de débit a été dépassée ; réessayez après la durée indiquée par Retry-After.
503 service_unavailable Une dépendance est temporairement indisponible ; réessayez après la durée indiquée par Retry-After.

Exemple

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…"'