Bir bağlantının passkey rpId değerini değiştirin
POST /v1/connections/{connection_id}:change-rp-id · İzin connections:write
Passkey bağlantısını yeni bir rpId'ye taşır ve bir geçiş penceresi başlatır. Bir passkey, kayıt olduğu rpId'ye bağlıdır; bu nedenle kullanıcıların passkey'leri varken rpId'yi değiştirmenin tek yolu budur. settings.rp_id alanını değiştiren bir PATCH isteği 409 rp_id_change_requires_migration ile reddedilir.
Geçiş penceresi boyunca kullanıcılar önceki rpId'nin Passkey'leriyle hâlâ giriş yapabilir ve yeni Passkey'ler yeni rpId üzerinde kaydedilir. Pencere sona erdiğinde veya Bu bağlantının rpId geçişini tamamlayın bağlantısıyla erken sonlandırdığınızda, önceki rpId üzerinde kalan Passkey'ler iptal edilir (neden rp_id_changed). Başka bir oturum açma yöntemi olmayan kullanıcıların o zaman parolasız e-posta ile giriş yapmaya veya hesap kurtarmaya ihtiyacı olur. Bir ortamda aynı anda yalnızca bir geçiş çalışabilir.
Bağlantının rpId'si, geçiş kaydı, yönetim denetim kaydı ve passkey_rp_id.migration_started olayı birlikte yazılır. rpId olan veya çalışan bir geçişin önceki rpId'si olan bir özel alan adı silinemez (409 domain_in_use_by_rp_id).
İstek
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
connection_id |
path | evet | Passkey bağlantı kimliği (conn_…). |
If-Match |
header | evet | Bağlantının ETag değeri (bkz. Bir bağlantıyı alın). |
Idempotency-Key |
header | hayır | Yeniden denenen isteği güvenli hale getiren isteğe bağlı anahtar (16-64 karakter). |
new_rp_id |
string | evet | Yeni rpId: ortamın active durumundaki bir özel alan adının ana bilgisayar adı (küçük harf, IDNA A-etiketi) veya her oturum açma ana bilgisayarını kendi rpId'si olarak kullanmak için boş dize. En fazla 253 bayt. |
confirm_rp_id |
string | evet | new_rp_id değerinin yeniden yazılmış hali. |
migration_window_days |
integer | hayır | Önceki rpId'nin Passkey'lerinin kaç gün çalışmaya devam edeceği: 30-365, varsayılan 90. |
{
"new_rp_id": "login.example.com",
"confirm_rp_id": "login.example.com",
"migration_window_days": 90
}
Yanıt
200 OK; geçiş ve bağlantının yeni sürümünü içeren bir ETag üstbilgisi.
{
"id": "rpm_01j9xr4a6b8c0d2e4f6g8h0j2k",
"connection_id": "conn_01j9xp6q0r1s5t7v9w1x3y5z7b",
"previous_rp_id": null,
"new_rp_id": "login.example.com",
"status": "active",
"started_at": "2026-10-27T10:00:00Z",
"ends_at": "2027-01-25T10:00:00Z",
"completed_at": null,
"revoked_count": null,
"new_registration_count": null,
"fallback_enabled_by_migration": false
}
| Alan | Açıklama |
|---|---|
previous_rp_id, new_rp_id |
Değişiklikten önceki ve sonraki rpId; null her oturum açma ana bilgisayarının kendi rpId'si olduğu anlamına gelir. |
status |
Pencere çalışırken active; sona erdiğinde completed; erken sonlandırıldığında completed_early. |
ends_at |
Pencerenin planlanan bitiş zamanı. |
completed_at, revoked_count, new_registration_count |
Geçiş kapandığında yazılır; active iken null. |
fallback_enabled_by_migration |
Passkey'ler tek birincil faktör olduğu için pencere boyunca yedek bir oturum açma yöntemi etkinleştirildiyse true. |
Hatalar
| HTTP | kod | Ne zaman |
|---|---|---|
| 400 | unknown_field |
İstek gövdesi bilinmeyen bir alan içeriyor. |
| 404 | not_found |
Bağlantı yok veya başka bir ortama ait. |
| 409 | rp_id_migration_in_progress |
Bu ortamda başka bir rpId geçişi çalışıyor. |
| 412 | precondition_failed |
If-Match geçerli sürümle eşleşmiyor. |
| 422 | validation_failed |
Bir alan eksik, çok uzun veya aralık dışında; new_rp_id ortamın active durumundaki bir özel alan adı değil ya da mevcut rpId'ye eşit; confirm_rp_id farklı; ya da bağlantı bir passkey bağlantısı değil (errors[].pointer: /new_rp_id, /confirm_rp_id, /migration_window_days, /connection_id). |
| 428 | precondition_required |
If-Match üstbilgisi eksik. |
| 401 | unauthenticated |
Kimlik bilgisi eksik, geçersiz veya iptal edilmiş. |
| 403 | insufficient_permissions |
Kimlik bilgisi gerekli izne sahip değil. |
| 429 | rate_limited |
Hız sınırı aşıldı; Retry-After süresinden sonra yeniden deneyin. |
| 503 | service_unavailable |
Bir bağımlılık geçici olarak kullanılamıyor; Retry-After süresinden sonra yeniden deneyin. |
Örnek
curl -X POST "https://api.eu.keenauth.com/v1/connections/conn_01j9xp6q0r1s5t7v9w1x3y5z7b:change-rp-id" \
-H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
-H 'If-Match: "3"' \
-H "Content-Type: application/json" \
-d '{"new_rp_id":"login.example.com","confirm_rp_id":"login.example.com"}'
keenauth connections change-rp-id conn_01j9xp6q0r1s5t7v9w1x3y5z7b --if-match '"3"' --yes \
--data '{"new_rp_id":"login.example.com","confirm_rp_id":"login.example.com"}'