接続の属性マッピングを置き換える
PUT /v1/connections/{connection_id}/attribute-mappings · 権限 connections:write
企業接続の属性マッピング一覧を全体置換します。ルールの順序は問いません。レスポンスはターゲット順に並びます。If-Match は必須です。指定がないとリクエストは 428 で失敗します。読み取り後に一覧が変更されている場合(または値が一致しない場合)は 412 で失敗し、何も書き込まれません。同じ一覧を送信しても書き込みは行われません。変更は次回のサインインから適用され、直近の成功した接続テストは無効になりません。書き込みは connection.attribute_mappings_replaced として監査されます(追加、削除、変更されたターゲット)。サインイン時の属性値が監査ログに書き込まれることはありません。
リクエスト
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
connection_id |
パス | はい | 企業接続の ID(conn_…)。 |
If-Match |
ヘッダー | はい | 直近の読み取りで得た ETag。欠落時は 428、古い場合は 412。 |
attribute_mappings |
配列 | はい | 新しい完全なリスト。最大 28 ルール。 |
attribute_mappings[].target |
文字列 | はい | email(すべてのリストで必須)、given_name、family_name、name、locale、zoneinfo、phone、groups、または user_metadata.<key>(キーは [a-z0-9_]{1,40}。登録済みの OIDC クレーム名と idp_ 接頭辞は使用不可。最大 20 キー)。ターゲットごとに 1 ルール。マッピングで app_metadata は書き込めません。 |
attribute_mappings[].source_name |
文字列 | はい | 1〜512 バイト。制御文字や双方向文字を含まず、先頭または末尾に空白を含まないこと。 |
attribute_mappings[].source_name_format |
文字列 | null | いいえ | SAML の NameFormat(絶対 URI)。1 つのソース名は 1 つの形式でのみ読み取れます。 |
attribute_mappings[].overwrite |
文字列 | はい | always、if_empty、または never。 |
attribute_mappings[].profile |
文字列 | いいえ | プリセット名。省略時は generic。 |
レスポンス
保存済みのリスト(属性マッピングを取得するを参照)と新しい ETag を含む 200 OK。
エラー
| HTTP | code | 発生条件 |
|---|---|---|
| 404 | not_found |
接続がこの環境に存在しないか、企業接続ではありません。 |
| 409 | conflict |
接続のプロトコルには属性マッピングがありません(LDAP)。 |
| 412 | precondition_failed |
If-Match が現在のバージョンと一致しないか、リストが同時に変更されました。 |
| 422 | validation_failed |
ルールが上記の規則に違反しています。違反した各ルールは errors[] の 1 項目となり、/attribute_mappings/<index>/<field> を指します。リスト全体のルール(email_required、too_many_metadata_keys)は /attribute_mappings を指します。 |
| 428 | precondition_required |
If-Match ヘッダーがありません。 |
| 400 | unknown_field |
リクエストボディに未知のフィールドがあります。 |
| 401 | unauthenticated |
資格情報がない、無効、または失効しています。 |
| 403 | insufficient_permissions |
資格情報に必要な権限がありません。 |
| 429 | rate_limited |
レート制限を超えました。Retry-After の期間を待ってから再試行してください。 |
| 503 | service_unavailable |
依存先が一時的に利用できません。Retry-After の期間を待ってから再試行してください。 |
例
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…"'