組織ポリシーの作成または置き換え
PUT /v1/organizations/{org_id}/policies/{policy_kind} · 権限 organizations:write
1 つのポリシー種別の設定オブジェクト全体を置き換えます。組織ポリシーは、環境の設定よりも厳しくすることしかできません。プランによる制限はサーバー側で適用されます。session と ip_allowlist の種別、および AAGUID 許可リストには Enterprise プランが必要です(開発環境では利用可能です)。設定内容は管理監査ログに記録されますが、organization.updated イベントには含まれません。
リクエスト
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
org_id |
パス | はい | 組織 ID(org_…)。 |
policy_kind |
パス | はい | ポリシー種別: authentication_methods、mfa、phishing_resistant、sso_enforcement、session、ip_allowlist。それ以外の値を指定すると 404 が返されます。 |
If-Match |
ヘッダー | いいえ | ポリシーが存在する場合に必須です(最後に読み取ったときの ETag)。ポリシーを作成する場合は省略します。* は既存のポリシーに一致します。 |
settings |
オブジェクト | はい | 種別ごとの設定オブジェクトです。種別ごとのフィールド: authentication_methods: allowed_connection_ids(conn_…)、allow_passkey、allow_password。mfa: required_for(none、admins、all)、allowed_factors(totp、webauthn、sms、email)、enrollment_grace_days(0〜30)。phishing_resistant: required_for、aaguid_allowlist(最大 500 件)。sso_enforcement: mode(off、org_context、verified_domains)、connection_ids(conn_…)、bypass_user_ids(usr_…、最大 2 件)。session: idle_minutes、absolute_minutes、refresh_idle_days、refresh_absolute_days。ip_allowlist: cidrs(最大 100 件)、applies_to(admins、all)。 |
リクエストボディ:
{
"settings": {
"required_for": "all",
"allowed_factors": [
"totp",
"webauthn"
],
"enrollment_grace_days": 7
}
}
レスポンス
ポリシーを作成した場合は 201 Created、置き換えた場合は 200 OK を返します。ボディはポリシーで、レスポンスには新しい ETag が含まれます。
{
"organization_id": "org_01j9xk3m7q8r2s4t6v8w0y2z4a",
"policy_kind": "mfa",
"schema_version": 1,
"settings": {
"required_for": "all",
"allowed_factors": [
"totp",
"webauthn"
],
"enrollment_grace_days": 7
},
"updated_at": "2026-10-12T09:30:00.123456Z",
"version": 1
}
エラー
| HTTP | code | 発生条件 |
|---|---|---|
| 400 | unknown_field |
ボディに、スキーマにないフィールドや読み取り専用のフィールドが含まれています。 |
| 403 | plan_feature_unavailable |
種別または AAGUID 許可リストに、より上位のプランが必要です。問題の詳細には feature と required_plan が含まれます。 |
| 404 | not_found |
組織が存在しないか、種別が不明です。 |
| 409 | domain_not_verified |
mode が verified_domains の sso_enforcement には、組織で検証済みのドメインが必要です。 |
| 409 | connection_test_required |
sso_enforcement を有効にする(off から、またはポリシーがない状態から有効にする)には、現在の構成で、connection_ids のいずれか 1 つ以上について、過去 24 時間以内に成功したテストサインインが必要です。接続テスト(POST /v1/connections/{connection_id}:test)を実行してから、もう一度お試しください。 |
| 409 | organization_pending_deletion |
組織はセルフサービス削除の処理を待っています。先に削除を取り消してください。 |
| 412 | precondition_failed |
If-Match が現在のバージョンと一致しない、この種別のポリシーが存在しない状態で送信された、またはこのリクエストの作成中に別のリクエストがポリシーを作成した場合に発生します。ポリシーを再度読み取ってください。 |
| 422 | validation_failed |
設定フィールドが不明であるか、無効です。errors[] は /settings/… を指します。 |
| 422 | policy_weaker_than_parent |
設定が環境の設定より弱くなっています。errors[] は弱くなったフィールドを指します。 |
| 422 | at_least_one_method |
authentication_methods で、サインイン方法が 1 つも残らない設定になっています。 |
| 428 | precondition_required |
ポリシーが存在するにもかかわらず、If-Match が指定されていません。 |
| 401 | unauthenticated |
認証情報がないか、無効であるか、失効しています。 |
| 403 | insufficient_permissions |
認証情報に必要な権限がありません。 |
| 429 | rate_limited |
レート制限を超えました。Retry-After で示された期間の後に再試行してください。 |
| 503 | service_unavailable |
依存先のサービスが一時的に利用できません。Retry-After で示された期間の後に再試行してください。 |
例
curl -X PUT https://api.eu.keenauth.com/v1/organizations/org_01j9xk3m7q8r2s4t6v8w0y2z4a/policies/mfa \
-H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
-H "Content-Type: application/json" \
-d '{"settings":{"required_for":"all","allowed_factors":["totp","webauthn"]}}'