Bağlantının öznitelik eşlemelerini değiştir
PUT /v1/connections/{connection_id}/attribute-mappings · izin connections:write
Kurumsal bağlantının öznitelik eşleme listesini tamamen değiştirir. Kuralların sırası önemsizdir; yanıt hedefe göre sıralıdır. If-Match zorunludur: yoksa istek 428 ile, liste okunduktan sonra değiştiyse (ya da değer eşleşmiyorsa) 412 ile başarısız olur ve hiçbir şey yazılmaz. Aynı listeyi göndermek yazma yapmaz. Değişiklik bir sonraki girişten itibaren geçerlidir ve son başarılı bağlantı testini geçersiz kılmaz. Yazma connection.attribute_mappings_replaced olarak audit'e düşer (eklenen, silinen ve değişen hedefler); girişlerden gelen öznitelik değerleri audit'e asla yazılmaz.
İstek
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
connection_id |
yol | evet | Kurumsal bağlantı kimliği (conn_…). |
If-Match |
başlık | evet | Son okumadaki ETag. Yoksa 428, eskiyse 412. |
attribute_mappings |
dizi | evet | Tam yeni liste, en çok 28 kural. |
attribute_mappings[].target |
string | evet | email (her listede zorunlu), given_name, family_name, name, locale, zoneinfo, phone, groups ya da user_metadata.<anahtar> (anahtar [a-z0-9_]{1,40}; kayıtlı OIDC claim adları ve idp_ öneki kullanılamaz; en çok 20 anahtar). Hedef başına tek kural. app_metadata eşlemeyle yazılamaz. |
attribute_mappings[].source_name |
string | evet | 1–512 bayt; denetim ya da çift yönlü metin karakteri, baş ve sonda boşluk yok. |
attribute_mappings[].source_name_format |
string | null | hayır | SAML NameFormat (mutlak URI). Bir kaynak adı yalnız tek biçimle okunabilir. |
attribute_mappings[].overwrite |
string | evet | always, if_empty ya da never. |
attribute_mappings[].profile |
string | hayır | Hazır profil adı; verilmezse generic. |
Yanıt
200 OK; saklanan liste (bkz. Öznitelik eşlemelerini getir) ve yeni ETag.
Hatalar
| HTTP | code | Ne zaman |
|---|---|---|
| 404 | not_found |
Bağlantı bu ortamda yok ya da kurumsal bağlantı değil. |
| 409 | conflict |
Bağlantının protokolünde öznitelik eşlemesi yok (LDAP). |
| 412 | precondition_failed |
If-Match güncel sürümle eşleşmiyor ya da liste eşzamanlı değişti. |
| 422 | validation_failed |
Bir kural yukarıdaki kuralları bozuyor. Her kırık kural bir errors[] öğesidir; işaretçi /attribute_mappings/<sıra>/<alan>, liste kurallarında /attribute_mappings'tir (email_required, too_many_metadata_keys). |
| 428 | precondition_required |
If-Match başlığı yok. |
| 400 | unknown_field |
Gövdede bilinmeyen alan var. |
| 401 | unauthenticated |
Kimlik bilgisi yok, geçersiz ya da iptal edilmiş. |
| 403 | insufficient_permissions |
Kimlik bilgisinde gerekli izin yok. |
| 429 | rate_limited |
Hız sınırı aşıldı; Retry-After süresinden sonra yeniden deneyin. |
| 503 | service_unavailable |
Bir bağımlılık geçici olarak kullanılamıyor; Retry-After süresinden sonra yeniden deneyin. |
Örnek
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…"'