
# 환경 구성 가져오기

`GET /fapi/v1/environment` · 환경의 로그인 호스트에서 호출됨

거래를 열기 전에 로그인 페이지가 필요로 하는 공개 구성을 반환합니다. 애플리케이션의 새 거래가 제공할 첫 번째 인증 요소,
가입 모드, 활성화된 언어 및 패스키가 제공되는 경우 패스키의 `rp_id`가 포함됩니다. 응답에는 개인 데이터가 없고,
쿠키를 읽지 않으며, 거래를 열지 않습니다.

## 요청

헤더:

| 헤더 | 필수 | 설명 |
| --- | --- | --- |
| `Idp-Client` | 예 | SDK 식별자, `<패키지>/<버전> (<런타임>/<버전>)`. |

쿼리 매개변수:

| 매개변수 | 필수 | 설명 |
| --- | --- | --- |
| `client_id` | 예 | 애플리케이션의 `client_id`. |

## 응답

`200 OK`:

| 필드 | 설명 |
| --- | --- |
| `schema_version` | `1`. |
| `first_factors` | 새 거래가 이 순서대로 제공하는 방법: `password`, `passkey`, `email_otp`, `magic_link`. 정책이 어떤 방법도 허용하지 않으면 비어 있습니다. |
| `sign_up` | 가입 모드: `open`, `invite_only` 또는 `closed`. |
| `locales` | `enabled`(활성화된 언어)와 `default`(기본 언어). |
| `passkey` | 패스키 로그인이 제공될 때만: `rp_id`. |

응답에는 `Cache-Control: max-age=60`이 포함되며, 정책 변경은 1분 이내에 반영됩니다.

## 오류

| 상태 | 코드 | 언제 |
| --- | --- | --- |
| 400 | `malformed_request` | `Idp-Client`이(가) 없습니다. |
| 403 | `environment_suspended` | 환경이 일시 중지되었습니다. |
| 403 | `headless_not_allowed` | 애플리케이션이 퍼스트 파티가 아닙니다. |
| 404 | `not_found` | 호스트가 어떤 환경에도 속하지 않습니다. |
| 422 | `validation_failed` | `client_id`이(가) 없거나, 너무 길거나, 알 수 없습니다(`/client_id`). |

## 예제

```bash
curl "https://example.keenauth.app/fapi/v1/environment?client_id=app_01j9zq3k5m7n8p9r0s1t2v3w4x" \
  -H "Idp-Client: my-app/1.0.0 (node/22.0.0)"
```

```json
{
  "schema_version": 1,
  "first_factors": ["password", "passkey", "email_otp"],
  "sign_up": "open",
  "locales": {"enabled": ["tr", "en"], "default": "tr"},
  "passkey": {"rp_id": "example.keenauth.app"}
}
```
