
# Bir bağlantıyı test edin

`POST /v1/connections/{connection_id}:test` · izin `connections:write`

Bir kurumsal bağlantının mevcut yapılandırmasıyla bir test girişi başlatır ve bir test URL'si döndürür. Bağlantıyı kuran kişi URL'yi bir tarayıcıda açar ve kimlik sağlayıcıda oturum açar. Tarayıcı ardından `test_id` sorgu parametresiyle birlikte `return_url` adresine döner. Sonucu [Son test sonucunu alın](latest-test-result.md) bölümünden okuyun.

Test girişi oturum oluşturmaz, kullanıcı sağlamaz ve hesap bağlamaz. Bağlantıyı etkinleştirmek için başarılı bir test gereklidir; kimlik sağlayıcı yapılandırması değiştirilirse bu test geçersiz olur.

Canlı yapılandırma yerine bir [taslak revizyonu](revisions.md) test etmek için `revision_id` değerini gönderin. Taslak, yalnızca bu test için canlı yapılandırmanın üzerine uygulanır (bir SP sunucu taşımasında test URL'si yeni sunucudadır). Bir revizyonun başarılı testi, [Bir revizyonu yayımlayın](publish-revision.md) işleminin ihtiyaç duyduğu kanıttır; canlı yapılandırma için etkinleştirme kanıtı olarak sayılmaz.

`test_url` bir taşıyıcı bağlantısıdır: onu bilen herkes testi 10 dakika içinde, bir kez çalıştırabilir. Yalnızca bu yanıtta döndürülür (`Cache-Control: no-store`) ve hiçbir zaman günlüğe kaydedilmez veya denetlenmez. Aynı `Idempotency-Key` ile isteği tekrarlarsanız, yeniden oynatılan yanıtta `test_url` bulunmaz ve `secret_redacted: true` yer alır; bunun yerine yeni bir test başlatın. Başlatmalar yalnızca test kimliğiyle `connection.test_started` olarak denetlenir.

## İstek

| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
| `connection_id` | yol | evet | Kurumsal bağlantı kimliği (`conn_…`). |
| `return_url` | string | evet | Testten sonra tarayıcının döneceği, en fazla 2048 bayt uzunluğunda mutlak `https` URL'si. `test_id` sorgu parametresi olarak eklenir. |
| `revision_id` | string | hayır | Canlı yapılandırma yerine test edilecek bağlantının taslak revizyonu (`connrev_…`). |

## Yanıt

`200 OK`:

```json
{
  "test_id": "conntest_01j9xr4a6b8c0d2e4f6g8h0j2k",
  "test_url": "https://acme.eu1.keenauth.app/sso/conn_01j9xp6q0r1s5t7v9w1x3y5z7b/start?t=…",
  "expires_at": "2026-10-20T10:10:00Z"
}
```

| Alan | Açıklama |
|---|---|
| `test_id` | Test kimliği (`conntest_…`). |
| `test_url` | Tarayıcıda açılacak URL; 10 dakika geçerlidir ve tek kullanımlıktır. Paylaşmayın veya günlüğe kaydetmeyin. Yeniden oynatılan yanıtta bulunmaz. |
| `expires_at` | Test URL'sinin sona erme zamanı. |
| `secret_redacted` | Aynı `Idempotency-Key` ile yeniden oynatılan yanıtta `true`. |

## Hatalar

| HTTP | code | Ne zaman |
|---|---|---|
| 404 | `not_found` | Bağlantı bu ortamda mevcut değil veya kurumsal bir bağlantı değil. |
| 409 | `conflict` | Bağlantı henüz test edilemez (protokol yapılandırması yok). |
| 422 | `validation_failed` | `return_url` eksik veya mutlak bir `https` URL'si değil (`errors[]` `/return_url` değerine işaret eder), ya da `revision_id` hatalı biçimli (`invalid_value`) veya bu bağlantının taslak revizyonu değil (`not_found`; yol `/revision_id`). |
| 400 | `unknown_field` | İstek gövdesinde bilinmeyen bir alan var. |
| 401 | `unauthenticated` | Kimlik bilgisi eksik, geçersiz veya iptal edilmiş. |
| 403 | `insufficient_permissions` | Kimlik bilgisinde gerekli izin yok. |
| 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

```bash
curl -X POST "https://api.eu.keenauth.com/v1/connections/conn_01j9xp6q0r1s5t7v9w1x3y5z7b:test" \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{"return_url":"https://admin.example.com/sso/test-done"}'
```

```bash
keenauth connections test conn_01j9xp6q0r1s5t7v9w1x3y5z7b --return-url https://admin.example.com/sso/test-done
```
