接続を作成
POST /v1/connections · 権限 connections:write
環境に新しい接続を登録します。プロトコル設定が必要な接続(social、enterprise)は inactive で開始されます。:activate を使って明示的に有効化してください。enterprise 接続は active で作成できません。新しい接続はまだサインインのテストに成功していないためです。設定にシークレットを含めることはできません。1 つの環境には最大 100 件の接続と 20 件の汎用ソーシャル(oidc_generic、oauth2_generic)接続を設定でき、1 つの組織には最大 20 件の接続を設定できます。
リクエスト
JSON ボディ(未知のフィールドは 400 unknown_field で拒否されます):
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
key |
string | はい | 安定した設定キー。^[a-z0-9_-]{1,64}$ に一致し、環境内で一意で、変更できません。 |
type |
string | はい | database、passwordless、passkey、social、enterprise のいずれか。変更できません。 |
strategy |
string | はい | タイプに応じた戦略(例: password、email_otp、google、saml)。変更できません。 |
name |
string | はい | 1〜128 文字。環境内で一意です。 |
display_name |
string | いいえ | サインイン画面に表示される 1〜128 文字。 |
status |
string | いいえ | active または inactive。database、passwordless、passkey の既定値は active、social、enterprise の既定値は inactive です。 |
org_id |
string | いいえ | 所有組織(org_…)。enterprise のみ。省略すると環境の接続になります。変更できません。 |
allowed_email_domains |
array of strings | いいえ | ホームレルム検出によってこの接続に振り分けられるメールドメイン。IDNA の A ラベル、小文字で指定します(例: xn--bcher-kva.example)。一意で、最大 100 件です。enterprise の場合のみ空でない値を指定できます。組織の接続では、すべてのドメインが組織の検証済みドメインである必要があり、active の組織接続には少なくとも 1 件が必要です。 |
allow_external_domains |
boolean | いいえ | 一覧にないメールドメインのユーザーもサインインできるようにします。enterprise のみ。既定値は false です。 |
jit_mode |
string | いいえ | ジャスト・イン・タイム・プロビジョニング。create は初回サインイン時にユーザーを作成し、create_and_update はさらに ID プロバイダーからプロフィールを更新します。off は既存のアカウントを必要とします。enterprise のみ。既定値は、環境の接続では create_and_update、組織の接続では off です。 |
email_trust |
boolean | いいえ | 自動アカウント連携およびジャスト・イン・タイム・プロビジョニングのために、ID プロバイダーが提示するメールアドレスを信頼します。enterprise のみ。既定値は false です。組織の接続で true にする場合は、空でない allowed_email_domains が必要で、そのすべてのドメインが組織の検証済みドメインである必要があります。 |
default_role_ids |
array of strings | いいえ | ジャスト・イン・タイム・サインインで作成されるメンバーシップに付与される環境のロール(rol_…、一意、最大 10 件)。環境の既定ロールおよび接続のグループロールマッピングに加えて付与されます。組織の enterprise 接続でのみ指定できます。すべてのロールは、この環境の特権を持たない環境ロールである必要があります。別の環境のロール、組織のロール、特権ロール、存在しないロールは拒否されます。後から削除されたり特権ロールに変更されたりしたロールは、サインイン時にスキップされます。 |
trust_idp_mfa |
boolean | いいえ | ID プロバイダーが提示する多要素認証(SAML の認証コンテキスト、OIDC の amr/acr)を、セッションの MFA の証明として受け入れます。enterprise のみ。既定値は false です。 |
settings |
object | いいえ | シークレットを含まない設定。最大 32 KiB です。シークレットのように見えるキーや値は拒否されます。 |
Idempotency-Key |
header | いいえ | 再試行されたリクエストを安全に扱うための任意のキー(16〜64 文字)。 |
レスポンス
201 Created と、接続情報およびそのバージョンを保持する ETag ヘッダーを返します。
{
"id": "conn_0k3v8m1q2x9dz4h7s5t6w0y1ab",
"key": "google",
"type": "social",
"strategy": "google",
"name": "Google",
"display_name": "Sign in with Google",
"status": "inactive",
"org_id": null,
"allowed_email_domains": [],
"allow_external_domains": false,
"jit_mode": null,
"email_trust": null,
"default_role_ids": [],
"trust_idp_mfa": null,
"allow_idp_initiated": null,
"idp_initiated_default_application_id": null,
"idp_initiated_allowed_application_ids": [],
"settings": {},
"created_at": "2026-10-05T09:30:00.123456Z",
"updated_at": "2026-10-05T09:30:00.123456Z"
}
パスキーの設定
type: "passkey" の場合、settings オブジェクトには以下のキーのみ指定できます。それ以外のキー、誤った型、範囲外の値は、422 validation_failed と、/settings/max_credentials_per_user などの errors[].pointer を伴って拒否されます。null の値は既定値を意味します。形式のエラーはプランのエラーより先に報告されます。
| キー | 型 | 注記 |
|---|---|---|
rp_id |
string | 省略、null、または空の場合、各サインインホストがそれぞれ独自の rpId になります。それ以外の場合は、環境の active なカスタムドメインのホスト名(小文字、IDNA の A ラベル)を指定します。その他の値は 422 validation_failed(/settings/rp_id)になります。環境にすでにパスキーがある場合は、パスキーの rpId を変更から変更してください。 |
rp_name |
string | 最大 128 文字。 |
passkey_first_factor_enabled、security_key_second_factor_enabled |
boolean | 既定値は true。 |
user_verification |
string | preferred(既定値)または required。 |
max_credentials_per_user |
integer | 1〜20。既定値は 20。小数は拒否されます。 |
require_device_bound_passkeys |
boolean | プランで制限されます。true には Startup が必要です。 |
attestation_required |
boolean | プランで制限されます。true には Enterprise が必要です。 |
aaguid_allowlist、aaguid_blocklist |
array of UUID strings | それぞれ一意のエントリーを最大 500 件まで指定できます(エラーは /settings/<key>/<index> を指します)。プランで制限されます。空でない一覧には Enterprise が必要です。 |
related_origins |
array of strings | https://host[:port] 形式のオリジン。プランで制限されます。空でない一覧には Enterprise が必要です。 |
passkey_enrollment_prompt |
string | off または after_login(既定値)。 |
プランで制限されているキーに既定値以外を書き込むと、403 plan_feature_unavailable となり、メンバー feature と required_plan が返されます。プランの権限が利用可能になるまで、これらのキーはどの環境でも設定できません。既定値(false、[]、null)の書き込みやキーの削除は常に許可されます。この機能が利用可能になった後は、related_origins の各エントリーが環境の有効な検証済みカスタムドメインである必要があります。そうでない場合、リクエストは 422 related_origin_not_verified で失敗します。
エラー
| HTTP | コード | 発生条件 |
|---|---|---|
| 400 | unknown_field |
ボディに未知のフィールドが含まれています。 |
| 403 | quota_exceeded |
環境または組織(org_id)の接続数の上限に達しています。 |
| 409 | conflict |
同じ key または name の接続がすでに存在します。 |
| 409 | connection_test_required |
リクエストが status: active の enterprise 接続を作成しようとしています。何も書き込まれません。inactive で作成し、サインインをテストしてから :activate で有効化してください。 |
| 415 | unsupported_media_type |
コンテンツタイプが application/json ではありません。 |
| 422 | validation_failed |
フィールドが不足しているか無効です。errors[].pointer が該当箇所を示します(シークレットのように見える設定の場合は、例えば /settings/client_secret)。 |
| 422 | related_origin_not_verified |
関連オリジンが環境の検証済みカスタムドメインではありません。 |
| 403 | plan_feature_unavailable |
設定した項目がプランに含まれていません(feature、required_plan のメンバー)。例: attestation_required。 |
| 401 | unauthenticated |
認証情報が不足しているか、無効または取り消されています。 |
| 403 | insufficient_permissions |
認証情報に必要な権限がありません。 |
| 429 | rate_limited |
レート制限を超えました。Retry-After の期間を待ってから再試行してください。 |
| 503 | service_unavailable |
依存先が一時的に利用できません。Retry-After の期間を待ってから再試行してください。 |
例
curl -X POST https://api.eu.keenauth.com/v1/connections \
-H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
-H "Content-Type: application/json" \
-d '{"key":"google","type":"social","strategy":"google","name":"Google"}'