Bağlantı revizyonunu yayımlama
POST /v1/connections/{connection_id}/revisions/{revision_id}:publish · izin connections:write
Taslak bir revizyonu kurumsal bağlantının canlı yapılandırması hâline getirir. Tek adımda revizyonun içeriği canlı olanın yerine geçer:
- SAML: kimlik sağlayıcının varlık kimliği, SSO ve SLO URL'leri ve revizyonun imza sertifikaları;
- OIDC: istemci alanları ve revizyon bir tane taşıyorsa yeni istemci sırrı;
- SP host taşıma: SP host'u ve SP URL'leri. Önceki host 30 gün daha yanıt vermeye devam eder, sonra
404döndürür.
Revizyonun, son 24 saat içinde başarıyla tamamlanmış bu revizyona ait bir test oturum açma işlemi olmalıdır: Bağlantıyı test etme sayfasında revision_id ile bir test başlatın ve işlemi tarayıcıda tamamlayın. Canlı yapılandırmanın testi bunun yerine geçmez.
Zaten yayımlanmış bir revizyonu yayımlamak hiçbir şey yazmaz ve already_published: true ile 200 döndürür; eşzamanlı iki yayımlama isteğinden yalnızca biri yazar. Yayımlama connection.revision_published olarak denetim kaydına geçirilir.
İstek gövdesi yoktur (hiç göndermeyin veya {} gönderin) ve If-Match yoktur, çünkü revizyonun bir sürümü yoktur. Taslak oluşturulduktan sonra canlı yapılandırma değiştiyse yayımlama reddedilir ve yeni bir taslak oluşturmanız gerekir.
İstek
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
connection_id |
yol | evet | Kurumsal bağlantı kimliği (conn_…). |
revision_id |
yol | evet | Revizyonları listeleme sayfasındaki revizyon kimliği (connrev_…). |
Idempotency-Key |
üst bilgi | hayır | Yeniden denenen bir isteği güvenli hâle getiren isteğe bağlı anahtar (16-64 karakter). |
Yanıt
200 OK:
{
"revision": {
"id": "connrev_01j9xr8c2d4e6f8g0h2j4k6m8n",
"connection_id": "conn_01j9xp6q0r1s5t7v9w1x3y5z7b",
"protocol": "saml",
"kind": "sp_host",
"status": "published",
"discard_reason": null,
"created_at": "2026-10-28T10:00:00Z",
"decided_at": "2026-10-28T11:00:00Z",
"purge_after": "2027-01-26T11:00:00Z",
"superseded_revision_id": null,
"changes": {
"sp_host": "login.example.com",
"idp_entity_id": null,
"idp_sso_url": null,
"idp_slo_url": null,
"certificate_fingerprints": [],
"mfa_authn_context_values": null,
"issuer": null,
"client_id": null,
"client_auth_method": null,
"provider_profile": null,
"client_secret_change": null
},
"latest_test": {
"test_id": "conntest_01j9xr4a6b8c0d2e4f6g8h0j2k",
"status": "passed",
"failure_reason": null,
"started_at": "2026-10-28T10:05:00Z",
"completed_at": "2026-10-28T10:06:00Z"
}
},
"already_published": false
}
Hatalar
| HTTP | code | Ne zaman |
|---|---|---|
| 400 | unknown_field |
Gövde boş değil ve {} değil. |
| 401 | unauthenticated |
Kimlik bilgisi eksik, geçersiz veya iptal edilmiş. |
| 403 | insufficient_permissions |
Kimlik bilgisinde connections:write izni yok. |
| 404 | not_found |
Bağlantı veya revizyon bu ortamda yok ya da revizyon başka bir bağlantıya ait. |
| 409 | conflict |
Bir ön koşul sağlanmıyor; detail hangisi olduğunu belirtir: revizyon iptal edilmiş; son 24 saat içinde başarıyla geçmiş bir testi yok; taslak oluşturulduktan sonra bağlantı değişti (yeni bir taslak oluşturun); önceki SP host taşımasının 30 günlük süresi hâlâ açık; yeni SP host artık bu ortamın bir host'u değil; bağlantı 3 aktif imza sertifikası sınırını aşardı. |
| 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/revisions/connrev_01j9xr8c2d4e6f8g0h2j4k6m8n:publish" \
-H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
-H "Idempotency-Key: $(uuidgen)"
keenauth connections revisions publish conn_01j9xp6q0r1s5t7v9w1x3y5z7b connrev_01j9xr8c2d4e6f8g0h2j4k6m8n --yes