
# 接続の SAML SP メタデータをダウンロード

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

エンタープライズ SAML 接続の、署名済み SAML 2.0 サービスプロバイダ（SP）メタデータドキュメントをダウンロードします。これは、ID プロバイダの管理者が ID プロバイダにアップロードするファイルです。接続の公開メタデータアドレス（`https://<sp host>/saml/<conn_…>/metadata`）で配信されるものと同じドキュメントです。

- `entityID`、`validUntil`（7 日後）、`cacheDuration`（`PT24H`）
- 署名用証明書と暗号化用証明書（年次の鍵ローテーション期間中は各 2 件）
- サポートされる NameID 形式、アサーションコンシューマサービス（HTTP-POST）、およびシングルログアウトのエンドポイント
- 接続の有効な SP 署名鍵で作成された、エンベロープ型の XML 署名

SP 鍵が存在しない場合は、初回使用時に作成されます。ドキュメントにシークレットは含まれません。読み取り操作は監査されません。

`revision_id` を指定すると、代わりに[ドラフトリビジョン](revisions.md)のドキュメントを取得できます。[SP ホストの移行](migrate-sp-host.md)の場合、このドキュメントには新しいホストのエンドポイントが含まれます。リビジョンを公開する前に、ID プロバイダの管理者に渡してください。

## リクエスト

| フィールド | 種類 | 必須 | 説明 |
|---|---|---|---|
| `connection_id` | パス | はい | エンタープライズ接続 ID（`conn_…`）。 |
| `revision_id` | クエリ | いいえ | 接続のドラフトリビジョン（`connrev_…`）。 |

## レスポンス

`200 OK`。本文は XML ドキュメントです:

| ヘッダー | 値 |
|---|---|
| `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>
```

## エラー

| HTTP | code | 発生条件 |
|---|---|---|
| 404 | `not_found` | 接続がこの環境に存在しないか、エンタープライズ接続ではありません。 |
| 409 | `conflict` | 接続が SAML 接続ではない、または SAML 構成がまだありません。 |
| 422 | `validation_failed` | `revision_id` の形式が不正か重複している（`invalid_value`、`repeated`）、またはこの接続のドラフトリビジョンではない（`not_found`）。`errors[]` は `/revision_id` を指します。 |
| 401 | `unauthenticated` | 認証情報が存在しないか、無効または取り消されています。 |
| 403 | `insufficient_permissions` | 認証情報に必要な権限がありません。 |
| 429 | `rate_limited` | レート制限を超えました。`Retry-After` の期間を待ってから再試行してください。 |
| 503 | `service_unavailable` | 依存先が一時的に利用できません。`Retry-After` の期間を待ってから再試行してください。 |

## 例

```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` を指定しない場合、CLI は XML を標準出力に書き出します。既存のファイルが上書きされることはありません。
