
# 接続の rpId 移行を完了する

`POST /v1/connections/{connection_id}:complete-rp-id-migration` · 権限 `connections:write`

移行期間が終了する前に、パスキー接続で実行中の rpId 移行を終了します。ステータスは `completed_early`（移行期間がすでに終了していた場合は `completed`）になり、以前の rpId に残っているパスキーは取り消されます（理由 `rp_id_changed`）。以前の rpId のオリジンは受け付けられなくなり、`passkey_rp_id.migration_completed` イベントが発行されます。この操作は元に戻せません。新しい rpId でパスキーを登録していないユーザーは、別の方法でサインインする必要があります。

## リクエスト

| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
| `connection_id` | path | はい | パスキー接続の ID（`conn_…`）。 |
| `Idempotency-Key` | header | いいえ | 再試行されたリクエストを安全にするための任意のキー（16〜64 文字）。 |

ボディは任意です。指定する場合は `{}` である必要があります。

## レスポンス

`200 OK`。終了した移行の内容が返されます（[rpId 移行を取得する](rp-id-migration.md) を参照）。

```json
{
  "id": "rpm_01j9xr4a6b8c0d2e4f6g8h0j2k",
  "connection_id": "conn_01j9xp6q0r1s5t7v9w1x3y5z7b",
  "previous_rp_id": null,
  "new_rp_id": "login.example.com",
  "status": "completed_early",
  "started_at": "2026-10-27T10:00:00Z",
  "ends_at": "2027-01-25T10:00:00Z",
  "completed_at": "2026-12-01T09:00:00Z",
  "revoked_count": 12,
  "new_registration_count": 340,
  "fallback_enabled_by_migration": false
}
```

## エラー

| HTTP | code | 発生条件 |
|---|---|---|
| 400 | `unknown_field` | ボディにフィールドが含まれています。 |
| 404 | `not_found` | 接続が存在しないか、別の環境に属しています。 |
| 409 | `no_active_rp_id_migration` | 接続に実行中の rpId 移行がありません（例: すでに完了している）。 |
| 401 | `unauthenticated` | 認証情報がないか、無効または取り消し済みです。 |
| 403 | `insufficient_permissions` | 認証情報に必要な権限がありません。 |
| 429 | `rate_limited` | レート制限を超えました。`Retry-After` の期間を待ってから再試行してください。 |
| 503 | `service_unavailable` | パスキーの件数を読み取れなかったか、他の依存先が利用できません。移行は開いたままになります。`Retry-After` の期間を待ってから再試行してください。 |

## 例

```bash
curl -X POST "https://api.eu.keenauth.com/v1/connections/conn_01j9xp6q0r1s5t7v9w1x3y5z7b:complete-rp-id-migration" \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY"
```

```bash
keenauth connections complete-rp-id-migration conn_01j9xp6q0r1s5t7v9w1x3y5z7b --yes
```
