
# Bir bağlantının SAML SP metadatasını indir

`GET /v1/connections/{connection_id}/sp-metadata` · izin `connections:read`

Kurumsal bir SAML bağlantısının imzalı SAML 2.0 hizmet sağlayıcı (SP) metadata belgesini indirir: kimlik sağlayıcının yöneticisinin kimlik sağlayıcıya yüklediği dosya. Bağlantının herkese açık metadata adresinin (`https://<sp host>/saml/<conn_…>/metadata`) sunduğu belgenin aynısıdır:

- `entityID`, `validUntil` (7 gün ileri) ve `cacheDuration` (`PT24H`);
- imzalama ve şifreleme sertifikaları (yıllık anahtar rotasyonu penceresinde her birinden ikişer tane);
- desteklenen NameID biçimleri, onaylama tüketici hizmeti (HTTP-POST) ve tek oturumdan çıkış uç noktaları;
- bağlantının etkin SP imzalama anahtarıyla oluşturulmuş, zarflanmış (enveloped) bir XML imzası.

SP anahtarları henüz yoksa ilk kullanımda oluşturulur. Belge herhangi bir gizli bilgi içermez. Okuma işlemleri denetim günlüğüne kaydedilmez.

`revision_id` ile bunun yerine bir [taslak revizyonun](revisions.md) belgesini alırsınız. Bir [SP host taşıma](migrate-sp-host.md) işlemi için belge yeni host üzerindeki uç noktaları içerir: revizyonu yayımlamadan önce bu belgeyi kimlik sağlayıcının yöneticisine verin.

## İstek

| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
| `connection_id` | yol | evet | Kurumsal bağlantı kimliği (`conn_…`). |
| `revision_id` | sorgu | hayır | Bağlantının bir taslak revizyonu (`connrev_…`). |

## Yanıt

`200 OK`, gövdede XML belgesiyle:

| Üstbilgi | Değer |
|---|---|
| `Content-Type` | `application/samlmetadata+xml` |
| `Content-Disposition` | `attachment; filename="<conn_…>-sp-metadata.xml"` |
| `Cache-Control` | `no-store` |

```xml
<md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata"
    ID="_…" entityID="https://acme.eu.keenauth.app/saml/conn_01j9xp6q0r1s5t7v9w1x3y5z7b/metadata"
    validUntil="2026-11-02T10:00:00Z" cacheDuration="PT24H">
  <ds:Signature>…</ds:Signature>
  <md:SPSSODescriptor AuthnRequestsSigned="true" WantAssertionsSigned="true" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
    …
  </md:SPSSODescriptor>
</md:EntityDescriptor>
```

## Hatalar

| HTTP | code | Ne zaman |
|---|---|---|
| 404 | `not_found` | Bağlantı bu ortamda yok veya kurumsal bir bağlantı değil. |
| 409 | `conflict` | Bağlantı bir SAML bağlantısı değil veya henüz bir SAML yapılandırması yok. |
| 422 | `validation_failed` | `revision_id` bozuk veya tekrarlanmış (`invalid_value`, `repeated`) ya da bu bağlantının bir taslak revizyonu değil (`not_found`); `errors[]` `/revision_id` değerini işaret eder. |
| 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 -o sp-metadata.xml "https://api.eu.keenauth.com/v1/connections/conn_01j9xp6q0r1s5t7v9w1x3y5z7b/sp-metadata" \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY"
```

```bash
keenauth connections sp-metadata conn_01j9xp6q0r1s5t7v9w1x3y5z7b --file sp-metadata.xml
```

`--file` kullanılmazsa CLI XML'i standart çıktıya yazar. Var olan bir dosyanın üzerine hiçbir zaman yazılmaz.
