
# Définir les remplacements de textes

`PUT /v1/branding/texts/{screen}/{locale}` · autorisation `branding:write`

Enregistre les remplacements de textes pour un écran et une langue donnés ; les clés présentes dans le corps sont ajoutées ou remplacées, les autres clés sont conservées. Seules les clés du catalogue intégré peuvent être remplacées, et une valeur doit conserver les `{{ placeholders }}` du texte du catalogue. Les caractères de contrôle et les caractères de contrôle bidirectionnels sont rejetés. Les textes de sécurité ne peuvent pas être remplacés : l'écran de consentement, la confirmation d'appareil et de déconnexion, l'avertissement relatif au code de récupération et la bannière d'aperçu. Les modifications prennent effet à la publication.

## Requête

| Champ | Type | Obligatoire | Description |
|---|---|---|---|
| `screen` | chemin | oui | Écran de la page hébergée (par exemple `login`, `authorize`). |
| `locale` | chemin | oui | Langue prise en charge (par exemple `en`, `tr`). |
| `application_id` | requête | non | Périmètre de l'application (`app_…`). Sans lui et sans `org_id`, le périmètre de l'environnement est utilisé. |
| `org_id` | requête | non | Périmètre de l'organisation (`org_…`). Ne peut pas être combiné avec `application_id`. |
| `texts` | objet | oui | Clé → valeur, de 1 à 500 clés, chaque valeur comptant de 1 à 1000 caractères. |

## Réponse

`200 OK` avec chaque remplacement du périmètre, de l'écran et de la langue.

```json
{"screen": "login", "locale": "tr", "texts": {"title": "Hoş geldiniz"}}
```

## Erreurs

| HTTP | code | Quand |
|---|---|---|
| 400 | `unknown_field` | Le corps contient un champ inconnu ou n'est pas un objet JSON. |
| 404 | `not_found` | La valeur de `application_id` ou `org_id` est mal formée, ou l'application n'existe pas dans cet environnement. |
| 422 | `validation_failed` | `texts` est absent ou vide, une clé est inconnue (`unknown_text_key`), un placeholder manque (`placeholder_mismatch`), la langue n'est pas prise en charge ou une valeur est invalide ; `pointer` vaut `/texts/<key>`. Les deux paramètres `application_id` et `org_id` ont été fournis (`mutually_exclusive`), ou l'un d'eux a été répété (`repeated`). |
| 401 | `unauthenticated` | Les identifiants sont absents, invalides ou révoqués. |
| 403 | `insufficient_permissions` | Les identifiants ne disposent pas de l'autorisation requise. |
| 429 | `rate_limited` | La limite de débit a été dépassée ; réessayez après le délai indiqué dans `Retry-After`. |
| 503 | `service_unavailable` | Une dépendance est temporairement indisponible ; réessayez après le délai indiqué dans `Retry-After`. |

## Exemple

```bash
curl -X PUT "https://api.eu.keenauth.com/v1/branding/texts/login/tr" \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{"texts":{"title":"Hoş geldiniz"}}'
```
