
# 提案された組織に参加する

`POST /fapi/v1/me/organization-suggestions/{domain_id}:join` · 環境のサインインホストから呼び出し

[自分の組織の提案を一覧表示](/docs/api/fapi/me/organization-suggestions/list) で得られた提案を受け入れます。認証済みユーザーは、環境のデフォルトのメンバーロールを持つ、提案された組織のメンバーになります。メンバーシップのソースは `domain_capture` となり、ユーザーが実行者として記録されます。`organization_membership.created` イベントが送信されます。同時に 2 件の参加操作があった場合、成功するのは 1 件だけです。参加には直近で確認されたセッションは必要ありません。付与されるのはデフォルトのメンバーロールのみで、ユーザーが確認済みのアドレスを持つドメインに限られます。認証済みユーザーの `__Host-idp_session` Cookie が必要です。Cookie がない、期限切れ、または取り消されている場合は、`401 unauthenticated` を返します。別オリジンのファーストパーティアプリは、代わりにフロント API アクセストークン（DPoP 証明付きの `Authorization: DPoP <token>`。[フロント API アクセストークン](/docs/api/fapi/front-api-token) を参照）を送信できます。

`@keenauth/js` の場合: `await keenauth.organizations.joinSuggestion(id)`。

## リクエスト

ヘッダー:

| ヘッダー | 必須 | 説明 |
| --- | --- | --- |
| `Idp-Client` | はい | SDK の識別子です。 |
| `Origin` | はい | `https://<sign-in host>` と完全に一致している必要があります。 |

`domain_id`: 提案の `id`（`odm_…`）。

ボディはありません（空の JSON オブジェクトも受け付けます）。

## レスポンス

`200 OK` と `{"membership_id": "mem_…", "organization_id": "org_…"}` を返します。

## エラー

| ステータス | コード | 発生条件 |
| --- | --- | --- |
| 401 | `unauthenticated` | 有効なセッション Cookie またはフロント API アクセストークンがありません。 |
| 403 | `origin_not_allowed` | `Origin` がない、または正しくありません。 |
| 403 | `role_not_assignable` | ドメインキャプチャでは、デフォルトのメンバーロールを付与できません。 |
| 403 | `user_not_active` | ユーザーがアクティブではありません。 |
| 404 | `not_found` | そのドメインはこのユーザーの提案ではありません（不明、形式が不正、`suggest` モードではない、このユーザーの確認済みアドレスがそのドメインにない、または 3 回非表示にされている）。 |
| 409 | `membership_already_exists` | ユーザーはその組織に既にメンバーシップを持っています。 |
| 409 | `organization_disabled` | 組織が無効化されている、または削除中です。 |
| 409 | `membership_limit_reached` | ユーザーが所属できるメンバーシップの上限に達しています。 |
| 409 | `organization_membership_limit_reached` | 組織がメンバーシップの上限に達しています。 |
| 503 | `temporarily_unavailable` | メンバーシップディレクトリが応答しませんでした。後で再試行してください。 |

## 例

```bash
curl -X POST https://example.keenauth.app/fapi/v1/me/organization-suggestions/odm_01j9a5c4000000000000000001:join \
  -H "Idp-Client: my-app/1.0.0 (node/22.0.0)" \
  -H "Origin: https://example.keenauth.app" \
  -b cookies.txt
```

```json
{
  "membership_id": "mem_01j9yyyyyyyyyyyyyyyyyyyyyy",
  "organization_id": "org_01j9xxxxxxxxxxxxxxxxxxxxxx"
}
```

## 個人データ

このエンドポイントは個人データ（組織のメンバーシップと招待）を扱います。保存される内容、保持期間、削除方法については、[KeenAuth API における個人データ](/docs/policies/personal-data) を参照してください。いずれのフィールドにも、特別な種類の個人データ（健康、生体情報、宗教、政治的意見、性的指向）を送信しないでください。
