
# Récupérer la configuration de l'environnement

`GET /fapi/v1/environment` · appelé depuis l'hôte de connexion de l'environnement

Renvoie la configuration publique dont une page de connexion a besoin avant d'ouvrir une transaction : les premiers facteurs
qu'une nouvelle transaction de l'application proposera, le mode d'inscription, les langues activées et, lorsque les passkeys
sont proposées, le `rp_id` de la passkey. La réponse ne contient aucune donnée personnelle, ne lit aucun cookie et n'ouvre
aucune transaction.

## Requête

En-têtes:

| En-tête | Requis | Description |
| --- | --- | --- |
| `Idp-Client` | oui | Identifiant SDK, `<paquet>/<version> (<runtime>/<version>)`. |

Paramètres de requête:

| Paramètre | Requis | Description |
| --- | --- | --- |
| `client_id` | oui | Le `client_id` de l'application. |

## Réponse

`200 OK`:

| Champ | Description |
| --- | --- |
| `schema_version` | `1`. |
| `first_factors` | Les méthodes proposées par une nouvelle transaction, dans cet ordre : `password`, `passkey`, `email_otp`, `magic_link`. Vide lorsque la politique n'autorise aucune méthode. |
| `sign_up` | Mode d'inscription : `open`, `invite_only` ou `closed`. |
| `locales` | `enabled` (langues activées) et `default` (langue par défaut). |
| `passkey` | Uniquement lorsque la connexion par passkey est proposée : `rp_id`. |

La réponse porte `Cache-Control: max-age=60` ; un changement de politique apparaît en moins d'une minute.

## Erreurs

| Statut | Code | Quand |
| --- | --- | --- |
| 400 | `malformed_request` | `Idp-Client` est absent. |
| 403 | `environment_suspended` | L'environnement est suspendu. |
| 403 | `headless_not_allowed` | L'application n'est pas une application first party. |
| 404 | `not_found` | L'hôte n'appartient à aucun environnement. |
| 422 | `validation_failed` | `client_id` est absent, trop long ou inconnu (`/client_id`). |

## Exemple

```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"}
}
```
