{"openapi":"3.1.0","info":{"title":"OAuth Translation Store","version":"1.0.0"},"paths":{"/api/v1/translations/{country_code}/batch":{"post":{"tags":["translations"],"summary":"Batch read translations for multiple codes within a country","operationId":"batch_read_api_v1_translations__country_code__batch_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code","title":"Country Code"},"description":"ISO 3166-1 alpha-2 country code"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranslationBatchRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/TranslationBatchResponseAllLocales"},{"$ref":"#/components/schemas/TranslationBatchResponseOneLocale"}],"title":"Response Batch Read Api V1 Translations  Country Code  Batch Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/translations/{country_code}/parity":{"get":{"tags":["translations"],"summary":"Parity DB vs local JSON files for a perimeter","operationId":"parity_api_v1_translations__country_code__parity_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code","title":"Country Code"},"description":"ISO 3166-1 alpha-2 country code"},{"name":"source_app","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source App"}},{"name":"prefix","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prefix"}},{"name":"source_locale","in":"query","required":false,"schema":{"type":"string","default":"fr","title":"Source Locale"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParityReportResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/translations/{country_code}/parity/snapshot":{"post":{"tags":["translations"],"summary":"Dump DB -> local JSON to repair divergences (export/snapshot)","operationId":"parity_snapshot_api_v1_translations__country_code__parity_snapshot_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code","title":"Country Code"},"description":"ISO 3166-1 alpha-2 country code"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParitySnapshotRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParitySnapshotResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/translations/{country_code}/codes":{"get":{"tags":["translations"],"summary":"G1 — Enumerate translation codes for a country (paginated, by source_app/prefix)","operationId":"list_codes_api_v1_translations__country_code__codes_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code","title":"Country Code"},"description":"ISO 3166-1 alpha-2 country code"},{"name":"source_app","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source App"}},{"name":"prefix","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prefix"}},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":500,"minimum":1},{"type":"null"}],"title":"Limit"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CodesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/translations/{country_code}/apps":{"get":{"tags":["translations"],"summary":"G2 — List distinct source_app present + code counts","operationId":"list_apps_api_v1_translations__country_code__apps_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code","title":"Country Code"},"description":"ISO 3166-1 alpha-2 country code"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/translations/{country_code}/inventory":{"get":{"tags":["translations"],"summary":"G3 — Per-locale inventory (translated/obsolete/missing) + completeness summary","operationId":"inventory_api_v1_translations__country_code__inventory_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code","title":"Country Code"},"description":"ISO 3166-1 alpha-2 country code"},{"name":"source_app","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source App"}},{"name":"prefix","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prefix"}},{"name":"locale","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Locale"}},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":500,"minimum":1},{"type":"null"}],"title":"Limit"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InventoryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/translations/{country_code}/delta":{"get":{"tags":["translations"],"summary":"G3-delta — Only missing+obsolete (code,field) for a target locale (= delta to translate)","operationId":"delta_api_v1_translations__country_code__delta_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code","title":"Country Code"},"description":"ISO 3166-1 alpha-2 country code"},{"name":"locale","in":"query","required":true,"schema":{"type":"string","description":"Target locale (never the source 'fr')","title":"Locale"},"description":"Target locale (never the source 'fr')"},{"name":"source_app","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source App"}},{"name":"prefix","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prefix"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeltaResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/translations/{country_code}/{code}":{"put":{"tags":["translations"],"summary":"Upsert translations for an entity code","operationId":"upsert_api_v1_translations__country_code___code__put","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"code","in":"path","required":true,"schema":{"type":"string","title":"Code"}},{"name":"country_code","in":"path","required":true,"schema":{"type":"string","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code","title":"Country Code"},"description":"ISO 3166-1 alpha-2 country code"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranslationPutRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranslationPutResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["translations"],"summary":"Read translations for a code (optionally filter by locale)","operationId":"read_one_api_v1_translations__country_code___code__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"code","in":"path","required":true,"schema":{"type":"string","title":"Code"}},{"name":"country_code","in":"path","required":true,"schema":{"type":"string","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code","title":"Country Code"},"description":"ISO 3166-1 alpha-2 country code"},{"name":"locale","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Locale"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/TranslationFieldAllLocales"},{"$ref":"#/components/schemas/TranslationFieldOneLocale"}],"title":"Response Read One Api V1 Translations  Country Code   Code  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["translations"],"summary":"Delete all translations for a code","operationId":"delete_api_v1_translations__country_code___code__delete","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"code","in":"path","required":true,"schema":{"type":"string","title":"Code"}},{"name":"country_code","in":"path","required":true,"schema":{"type":"string","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code","title":"Country Code"},"description":"ISO 3166-1 alpha-2 country code"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranslationDeleteResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/translations/{country_code}/{code}/locales":{"get":{"tags":["translations"],"summary":"List available locales for a code","operationId":"read_locales_api_v1_translations__country_code___code__locales_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"code","in":"path","required":true,"schema":{"type":"string","title":"Code"}},{"name":"country_code","in":"path","required":true,"schema":{"type":"string","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code","title":"Country Code"},"description":"ISO 3166-1 alpha-2 country code"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranslationLocalesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/translations/{country_code}/{code}/{locale}":{"put":{"tags":["translations"],"summary":"G5 — Upsert translations for a SINGLE targeted locale (manual per-locale edit)","description":"G5 — édition manuelle ciblée d'UNE locale (§4.3). Réutilise ``upsert_translations`` en\npivotant ``{field: texte}`` → ``{field: {locale: texte}}`` ⇒ écrit DB + page.json (JP4)\nsous la SEULE locale ciblée (merge additif, les autres locales/fields intacts).","operationId":"upsert_locale_api_v1_translations__country_code___code___locale__put","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"code","in":"path","required":true,"schema":{"type":"string","title":"Code"}},{"name":"locale","in":"path","required":true,"schema":{"type":"string","title":"Locale"}},{"name":"country_code","in":"path","required":true,"schema":{"type":"string","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code","title":"Country Code"},"description":"ISO 3166-1 alpha-2 country code"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranslationPutLocaleRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranslationPutLocaleResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/translation-jobs/content":{"post":{"tags":["translation-jobs"],"summary":"Create Content Job","operationId":"create_content_job_api_v1_translation_jobs_content_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranslationContentJobCreateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranslationJobRunResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/translation-jobs/translate-delta":{"post":{"tags":["translation-jobs"],"summary":"Translate Delta","description":"GESTE CENTRAL CONSOLE (§4.0/§4.2) — traduit au GPU le DELTA (missing+obsolete) d'une\nlangue pour un périmètre (source_app[, prefix]), PAS tout le catalogue. Le serveur calcule\nle delta, bâtit un content job (1 page par code, fields = textes SOURCE), puis le pousse sur\nle bus durable namespacé → le worker permanent le TIRE et appelle le moteur GPU souverain.\n409 si le delta est vide (rien à traduire) ou si aucune source n'est disponible.","operationId":"translate_delta_api_v1_translation_jobs_translate_delta_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranslateDeltaRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranslationJobRunResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/translation-jobs":{"get":{"tags":["translation-jobs"],"summary":"List Translation Jobs","operationId":"list_translation_jobs_api_v1_translation_jobs_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"source_app","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source App"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranslationJobRunListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/translation-jobs/{job_code}":{"get":{"tags":["translation-jobs"],"summary":"Get Translation Job","operationId":"get_translation_job_api_v1_translation_jobs__job_code__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"job_code","in":"path","required":true,"schema":{"type":"string","title":"Job Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranslationJobRunResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/translation-jobs/{job_code}/steps":{"get":{"tags":["translation-jobs"],"summary":"Get Translation Job Steps","operationId":"get_translation_job_steps_api_v1_translation_jobs__job_code__steps_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"job_code","in":"path","required":true,"schema":{"type":"string","title":"Job Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranslationJobStepListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/translation-jobs/{job_code}/events":{"get":{"tags":["translation-jobs"],"summary":"Get Translation Job Events","operationId":"get_translation_job_events_api_v1_translation_jobs__job_code__events_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"job_code","in":"path","required":true,"schema":{"type":"string","title":"Job Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranslationJobEventListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/translation-jobs/{job_code}/cancel":{"post":{"tags":["translation-jobs"],"summary":"Cancel Translation Job","operationId":"cancel_translation_job_api_v1_translation_jobs__job_code__cancel_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"job_code","in":"path","required":true,"schema":{"type":"string","title":"Job Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranslationJobRunResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/translation-jobs/{job_code}/rerun":{"post":{"tags":["translation-jobs"],"summary":"Rerun Translation Job","operationId":"rerun_translation_job_api_v1_translation_jobs__job_code__rerun_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"job_code","in":"path","required":true,"schema":{"type":"string","title":"Job Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranslationJobRunResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/translations/import":{"post":{"tags":["translations","import"],"summary":"Import/pull JSON data/ → Scylla","operationId":"import_translations_api_v1_translations_import_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/console/auth/login":{"post":{"tags":["console","auth"],"summary":"Console login (super_admin only)","operationId":"login_api_v1_console_auth_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleLoginRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleLoginResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/console/auth/logout":{"post":{"tags":["console","auth"],"summary":"Console logout (clears session cookie)","operationId":"logout_api_v1_console_auth_logout_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/console/auth/me":{"get":{"tags":["console","auth"],"summary":"Current console identity","operationId":"me_api_v1_console_auth_me_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"translation_console_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Translation Console Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleMeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/console/config/providers":{"get":{"tags":["console","config"],"summary":"Config providers + routage (clés masquées)","operationId":"get_config_api_v1_console_config_providers_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"translation_console_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Translation Console Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/console/config/provider":{"put":{"tags":["console","config"],"summary":"Créer/éditer un provider IA (clé write-only)","operationId":"put_provider_api_v1_console_config_provider_put","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"translation_console_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Translation Console Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProviderUpsert"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/console/config/routing":{"put":{"tags":["console","config"],"summary":"Router une langue vers un provider","operationId":"put_routing_api_v1_console_config_routing_put","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"translation_console_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Translation Console Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoutingUpsert"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/console/config/routing/{locale}":{"delete":{"tags":["console","config"],"summary":"Retirer le routage d'une langue (retour sensibilité)","operationId":"delete_routing_api_v1_console_config_routing__locale__delete","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"locale","in":"path","required":true,"schema":{"type":"string","title":"Locale"}},{"name":"translation_console_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Translation Console Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/console/config/apply":{"post":{"tags":["console","config"],"summary":"Invalide le cache config (applique à chaud)","operationId":"apply_config_api_v1_console_config_apply_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"translation_console_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Translation Console Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/console/config/test-provider":{"post":{"tags":["console","config"],"summary":"Comparateur : traduit un échantillon avec un provider","description":"Traduit `sample` (FR→`locale`) avec le provider demandé (modèle optionnel) → aide à comparer\nla qualité AVANT de router une langue (scénario « traduction vilaine → comparer → choisir »).","operationId":"test_provider_api_v1_console_config_test_provider_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"translation_console_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Translation Console Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TestProviderRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/":{"get":{"tags":["meta"],"summary":"API home","operationId":"home__get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/health":{"get":{"tags":["system"],"summary":"Health","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health/ready":{"get":{"tags":["system"],"summary":"Health Ready","operationId":"health_ready_health_ready_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/version":{"get":{"tags":["system"],"summary":"Version","operationId":"version_version_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"AppCount":{"properties":{"source_app":{"type":"string","title":"Source App"},"code_count":{"type":"integer","title":"Code Count"}},"type":"object","required":["source_app","code_count"],"title":"AppCount"},"AppsResponse":{"properties":{"country_code":{"type":"string","title":"Country Code"},"apps":{"items":{"$ref":"#/components/schemas/AppCount"},"type":"array","title":"Apps"}},"type":"object","required":["country_code","apps"],"title":"AppsResponse","description":"G2 — GET /api/v1/translations/{cc}/apps (source_app distincts + comptes)."},"CodesResponse":{"properties":{"country_code":{"type":"string","title":"Country Code"},"source_app":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source App"},"prefix":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prefix"},"codes":{"items":{"type":"string"},"type":"array","title":"Codes"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"total_estimate":{"type":"integer","title":"Total Estimate"}},"type":"object","required":["country_code","codes","total_estimate"],"title":"CodesResponse","description":"G1 — GET /api/v1/translations/{cc}/codes (énumération paginée)."},"ConsoleLoginRequest":{"properties":{"email":{"type":"string","minLength":1,"title":"Email"},"password":{"type":"string","minLength":1,"title":"Password"}},"type":"object","required":["email","password"],"title":"ConsoleLoginRequest"},"ConsoleLoginResponse":{"properties":{"status":{"type":"string","title":"Status"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"is_super_admin":{"type":"boolean","title":"Is Super Admin"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"}},"type":"object","required":["status","is_super_admin"],"title":"ConsoleLoginResponse"},"ConsoleMeResponse":{"properties":{"subject":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subject"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"is_super_admin":{"type":"boolean","title":"Is Super Admin"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"}},"type":"object","required":["is_super_admin"],"title":"ConsoleMeResponse"},"DeltaCounts":{"properties":{"missing":{"type":"integer","title":"Missing","default":0},"obsolete":{"type":"integer","title":"Obsolete","default":0}},"type":"object","title":"DeltaCounts"},"DeltaItem":{"properties":{"code":{"type":"string","title":"Code"},"field":{"type":"string","title":"Field"},"fr":{"type":"string","title":"Fr","default":""}},"type":"object","required":["code","field"],"title":"DeltaItem"},"DeltaResponse":{"properties":{"country_code":{"type":"string","title":"Country Code"},"locale":{"type":"string","title":"Locale"},"source_app":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source App"},"prefix":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prefix"},"delta":{"items":{"$ref":"#/components/schemas/DeltaItem"},"type":"array","title":"Delta"},"counts":{"$ref":"#/components/schemas/DeltaCounts"}},"type":"object","required":["country_code","locale","delta","counts"],"title":"DeltaResponse","description":"G3-delta — GET /api/v1/translations/{cc}/delta (missing+obsolete d'une langue)."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ImportConflict":{"properties":{"country_code":{"type":"string","title":"Country Code"},"code":{"type":"string","title":"Code"},"reason":{"type":"string","enum":["db-newer","same-datakey"],"title":"Reason"},"db_updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Db Updated At"},"file_updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"File Updated At"}},"type":"object","required":["country_code","code","reason"],"title":"ImportConflict"},"ImportRequest":{"properties":{"source":{"anyOf":[{"$ref":"#/components/schemas/PullSource"},{"type":"null"}]},"country_codes":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Country Codes","description":"None = tous (ZZ + pays). Sinon filtre (ex ['ZZ','FR'])."},"conflict_policy":{"type":"string","enum":["skip-older","force","dry-run"],"title":"Conflict Policy","default":"skip-older"}},"type":"object","title":"ImportRequest"},"ImportResponse":{"properties":{"source":{"type":"string","title":"Source"},"conflict_policy":{"type":"string","enum":["skip-older","force","dry-run"],"title":"Conflict Policy"},"dry_run":{"type":"boolean","title":"Dry Run"},"pages_seen":{"type":"integer","title":"Pages Seen"},"rows_written":{"type":"integer","title":"Rows Written"},"rows_skipped_db_newer":{"type":"integer","title":"Rows Skipped Db Newer"},"rows_skipped_same_datakey":{"type":"integer","title":"Rows Skipped Same Datakey"},"countries":{"items":{"type":"string"},"type":"array","title":"Countries"},"conflicts":{"items":{"$ref":"#/components/schemas/ImportConflict"},"type":"array","title":"Conflicts"},"duration_ms":{"type":"integer","title":"Duration Ms"}},"type":"object","required":["source","conflict_policy","dry_run","pages_seen","rows_written","rows_skipped_db_newer","rows_skipped_same_datakey","countries","conflicts","duration_ms"],"title":"ImportResponse"},"InventoryItem":{"properties":{"code":{"type":"string","title":"Code"},"field":{"type":"string","title":"Field"},"source_present":{"type":"boolean","title":"Source Present"},"locales":{"additionalProperties":{"type":"string"},"type":"object","title":"Locales"}},"type":"object","required":["code","field","source_present","locales"],"title":"InventoryItem"},"InventoryResponse":{"properties":{"country_code":{"type":"string","title":"Country Code"},"source_app":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source App"},"prefix":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prefix"},"summary":{"$ref":"#/components/schemas/InventorySummary"},"items":{"items":{"$ref":"#/components/schemas/InventoryItem"},"type":"array","title":"Items"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"type":"object","required":["country_code","summary","items"],"title":"InventoryResponse","description":"G3 — GET /api/v1/translations/{cc}/inventory (état par locale + summary)."},"InventorySummary":{"properties":{"total":{"type":"integer","title":"Total"},"by_locale":{"additionalProperties":{"$ref":"#/components/schemas/LocaleStateCounts"},"type":"object","title":"By Locale"}},"type":"object","required":["total","by_locale"],"title":"InventorySummary"},"LocaleStateCounts":{"properties":{"translated":{"type":"integer","title":"Translated","default":0},"obsolete":{"type":"integer","title":"Obsolete","default":0},"missing":{"type":"integer","title":"Missing","default":0}},"type":"object","title":"LocaleStateCounts"},"ParityItem":{"properties":{"code":{"type":"string","title":"Code"},"locale":{"type":"string","title":"Locale"},"state":{"type":"string","title":"State"}},"type":"object","required":["code","locale","state"],"title":"ParityItem"},"ParityReportResponse":{"properties":{"country_code":{"type":"string","title":"Country Code"},"source_app":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source App"},"prefix":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prefix"},"summary":{"$ref":"#/components/schemas/ParitySummary"},"items":{"items":{"$ref":"#/components/schemas/ParityItem"},"type":"array","title":"Items"}},"type":"object","required":["country_code","summary","items"],"title":"ParityReportResponse"},"ParitySnapshotRequest":{"properties":{"source_app":{"type":"string","title":"Source App"},"prefix":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prefix"},"source_locale":{"type":"string","title":"Source Locale","default":"fr"},"dry_run":{"type":"boolean","title":"Dry Run","default":false}},"type":"object","required":["source_app"],"title":"ParitySnapshotRequest"},"ParitySnapshotResponse":{"properties":{"country_code":{"type":"string","title":"Country Code"},"count":{"type":"integer","title":"Count"},"dry_run":{"type":"boolean","title":"Dry Run"},"snapshotted":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Snapshotted"},"report_summary":{"$ref":"#/components/schemas/ParitySummary"}},"type":"object","required":["country_code","count","dry_run","snapshotted","report_summary"],"title":"ParitySnapshotResponse"},"ParitySummary":{"properties":{"in_parity":{"type":"integer","title":"In Parity","default":0},"diverged":{"type":"integer","title":"Diverged","default":0},"file_missing":{"type":"integer","title":"File Missing","default":0},"db_missing":{"type":"integer","title":"Db Missing","default":0}},"type":"object","title":"ParitySummary"},"ProviderUpsert":{"properties":{"provider_code":{"type":"string","minLength":1,"title":"Provider Code"},"display_name":{"type":"string","title":"Display Name","default":""},"base_url":{"type":"string","title":"Base Url","default":""},"default_model":{"type":"string","title":"Default Model","default":""},"sensitivity_role":{"type":"string","title":"Sensitivity Role","default":"cloud"},"enabled":{"type":"boolean","title":"Enabled","default":true},"api_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"},"timeout_seconds":{"type":"integer","title":"Timeout Seconds","default":120}},"type":"object","required":["provider_code"],"title":"ProviderUpsert"},"PullSource":{"properties":{"mode":{"type":"string","enum":["git","artifact","remote"],"title":"Mode"},"repo_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Repo Path"},"git_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Git Ref"},"subpath":{"type":"string","title":"Subpath","default":"apps/translation/data/content_translations"},"artifact_uri":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Artifact Uri"},"remote_base_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Remote Base Url"},"remote_service_api_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Remote Service Api Key"}},"type":"object","required":["mode"],"title":"PullSource","description":"Optionnel : si absent, on importe le ``data/`` LOCAL courant (pas de pull)."},"RoutingUpsert":{"properties":{"locale":{"type":"string","minLength":1,"title":"Locale"},"provider_code":{"type":"string","minLength":1,"title":"Provider Code"},"model_override":{"type":"string","title":"Model Override","default":""}},"type":"object","required":["locale","provider_code"],"title":"RoutingUpsert"},"TestProviderRequest":{"properties":{"provider_code":{"type":"string","minLength":1,"title":"Provider Code"},"locale":{"type":"string","minLength":1,"title":"Locale"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"sample":{"items":{"type":"string"},"type":"array","maxItems":20,"title":"Sample"},"source_locale":{"type":"string","title":"Source Locale","default":"fr"}},"type":"object","required":["provider_code","locale"],"title":"TestProviderRequest"},"TranslateDeltaRequest":{"properties":{"source_app":{"type":"string","title":"Source App"},"locale":{"type":"string","title":"Locale"},"country_code":{"type":"string","title":"Country Code","default":"ZZ"},"prefix":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prefix"},"force":{"type":"boolean","title":"Force","default":false}},"type":"object","required":["source_app","locale"],"title":"TranslateDeltaRequest","description":"Geste central console (§4.0/§4.2) : traduire au GPU le DELTA d'une langue, PAS tout\nresoumettre. Le serveur calcule le delta (missing+obsolete) puis bâtit un content job.\n\n``force=True`` (« tout retraduire ») : retraduit TOUT le périmètre (y compris déjà traduit) →\nÉCRASE l'existant. Sert à corriger une langue mal rendue après changement de provider (§2.6 / §4.2)."},"TranslationBatchRequest":{"properties":{"codes":{"items":{"type":"string"},"type":"array","maxItems":100,"minItems":1,"title":"Codes"},"locale":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Locale"}},"type":"object","required":["codes"],"title":"TranslationBatchRequest","description":"POST /api/v1/translations/{country_code}/batch"},"TranslationBatchResponseAllLocales":{"properties":{"country_code":{"type":"string","title":"Country Code"},"items":{"items":{"$ref":"#/components/schemas/TranslationFieldAllLocales"},"type":"array","title":"Items"}},"type":"object","required":["country_code","items"],"title":"TranslationBatchResponseAllLocales"},"TranslationBatchResponseOneLocale":{"properties":{"country_code":{"type":"string","title":"Country Code"},"locale":{"type":"string","title":"Locale"},"items":{"items":{"$ref":"#/components/schemas/TranslationFieldOneLocale"},"type":"array","title":"Items"}},"type":"object","required":["country_code","locale","items"],"title":"TranslationBatchResponseOneLocale"},"TranslationContentJobCreateRequest":{"properties":{"source_app":{"type":"string","title":"Source App"},"job_family":{"type":"string","title":"Job Family","default":"content_text_translation"},"job_kind":{"type":"string","title":"Job Kind","default":"content_branch"},"triggered_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Triggered By"},"source_locale":{"type":"string","title":"Source Locale","default":"fr"},"target_locale":{"type":"string","title":"Target Locale"},"country_code":{"type":"string","title":"Country Code","default":"ZZ"},"scope":{"$ref":"#/components/schemas/TranslationJobScope"},"pages":{"items":{"$ref":"#/components/schemas/TranslationJobPage"},"type":"array","title":"Pages"},"run_immediately":{"type":"boolean","title":"Run Immediately","default":true},"sensitivity":{"type":"string","title":"Sensitivity","default":"sensitive"},"overwrite":{"type":"boolean","title":"Overwrite","default":false}},"type":"object","required":["source_app","target_locale","scope"],"title":"TranslationContentJobCreateRequest"},"TranslationDeleteResponse":{"properties":{"country_code":{"type":"string","title":"Country Code"},"code":{"type":"string","title":"Code"},"deleted":{"type":"boolean","title":"Deleted"},"message":{"type":"string","title":"Message","default":"ok"}},"type":"object","required":["country_code","code","deleted"],"title":"TranslationDeleteResponse"},"TranslationFieldAllLocales":{"properties":{"country_code":{"type":"string","title":"Country Code"},"code":{"type":"string","title":"Code"},"fields":{"additionalProperties":{"additionalProperties":{"type":"string"},"type":"object"},"type":"object","title":"Fields"}},"type":"object","required":["country_code","code","fields"],"title":"TranslationFieldAllLocales","description":"All locales for all fields."},"TranslationFieldOneLocale":{"properties":{"country_code":{"type":"string","title":"Country Code"},"code":{"type":"string","title":"Code"},"locale":{"type":"string","title":"Locale"},"fields":{"additionalProperties":{"type":"string"},"type":"object","title":"Fields"}},"type":"object","required":["country_code","code","locale","fields"],"title":"TranslationFieldOneLocale","description":"One locale for all fields."},"TranslationJobEventListResponse":{"properties":{"events":{"items":{"$ref":"#/components/schemas/TranslationJobEventResponse"},"type":"array","title":"Events"}},"type":"object","required":["events"],"title":"TranslationJobEventListResponse"},"TranslationJobEventResponse":{"properties":{"job_code":{"type":"string","title":"Job Code"},"event_order":{"type":"integer","title":"Event Order"},"event_code":{"type":"string","title":"Event Code"},"source_app":{"type":"string","title":"Source App"},"event_kind":{"type":"string","title":"Event Kind"},"message":{"type":"string","title":"Message"},"payload":{"additionalProperties":true,"type":"object","title":"Payload"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"}},"type":"object","required":["job_code","event_order","event_code","source_app","event_kind","message","payload"],"title":"TranslationJobEventResponse"},"TranslationJobPage":{"properties":{"page_key":{"type":"string","title":"Page Key"},"route_path":{"type":"string","title":"Route Path"},"page_title":{"type":"string","title":"Page Title","default":""},"translation_code":{"type":"string","title":"Translation Code"},"source_hash":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Hash"},"fields":{"additionalProperties":{"type":"string"},"type":"object","title":"Fields"},"context":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Context"}},"type":"object","required":["page_key","route_path","translation_code"],"title":"TranslationJobPage"},"TranslationJobRunListResponse":{"properties":{"runs":{"items":{"$ref":"#/components/schemas/TranslationJobRunResponse"},"type":"array","title":"Runs"}},"type":"object","required":["runs"],"title":"TranslationJobRunListResponse"},"TranslationJobRunResponse":{"properties":{"job_code":{"type":"string","title":"Job Code"},"source_app":{"type":"string","title":"Source App"},"job_family":{"type":"string","title":"Job Family"},"job_kind":{"type":"string","title":"Job Kind"},"triggered_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Triggered By"},"source_locale":{"type":"string","title":"Source Locale"},"target_locale":{"type":"string","title":"Target Locale"},"country_code":{"type":"string","title":"Country Code"},"scope_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scope Type"},"scope_root_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scope Root Path"},"status":{"type":"string","title":"Status"},"status_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Message"},"provider_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider Name"},"pages_total":{"type":"integer","title":"Pages Total"},"pages_completed":{"type":"integer","title":"Pages Completed"},"pages_failed":{"type":"integer","title":"Pages Failed"},"request":{"additionalProperties":true,"type":"object","title":"Request"},"result":{"additionalProperties":true,"type":"object","title":"Result"},"error":{"additionalProperties":true,"type":"object","title":"Error"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Started At"},"finished_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Finished At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["job_code","source_app","job_family","job_kind","source_locale","target_locale","country_code","status","pages_total","pages_completed","pages_failed","request","result","error"],"title":"TranslationJobRunResponse"},"TranslationJobScope":{"properties":{"root_path":{"type":"string","title":"Root Path"},"scope_type":{"type":"string","title":"Scope Type"}},"type":"object","required":["root_path","scope_type"],"title":"TranslationJobScope"},"TranslationJobStepListResponse":{"properties":{"steps":{"items":{"$ref":"#/components/schemas/TranslationJobStepResponse"},"type":"array","title":"Steps"}},"type":"object","required":["steps"],"title":"TranslationJobStepListResponse"},"TranslationJobStepResponse":{"properties":{"job_code":{"type":"string","title":"Job Code"},"step_order":{"type":"integer","title":"Step Order"},"step_code":{"type":"string","title":"Step Code"},"source_app":{"type":"string","title":"Source App"},"route_path":{"type":"string","title":"Route Path"},"page_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Page Key"},"page_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Page Title"},"translation_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Translation Code"},"source_hash":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Hash"},"status":{"type":"string","title":"Status"},"translated_fields":{"type":"integer","title":"Translated Fields"},"total_fields":{"type":"integer","title":"Total Fields"},"request":{"additionalProperties":true,"type":"object","title":"Request"},"response":{"additionalProperties":true,"type":"object","title":"Response"},"error":{"additionalProperties":true,"type":"object","title":"Error"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Started At"},"finished_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Finished At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["job_code","step_order","step_code","source_app","route_path","status","translated_fields","total_fields","request","response","error"],"title":"TranslationJobStepResponse"},"TranslationLocalesResponse":{"properties":{"country_code":{"type":"string","title":"Country Code"},"code":{"type":"string","title":"Code"},"locales":{"items":{"type":"string"},"type":"array","title":"Locales"}},"type":"object","required":["country_code","code","locales"],"title":"TranslationLocalesResponse"},"TranslationPutLocaleRequest":{"properties":{"source_app":{"type":"string","title":"Source App","description":"Application that owns the data"},"fields":{"additionalProperties":{"type":"string"},"type":"object","title":"Fields","description":"field_name → texte traduit pour la locale ciblée. Ex: {'heading': 'Mi biblioteca'}"}},"type":"object","required":["source_app","fields"],"title":"TranslationPutLocaleRequest","description":"PUT /api/v1/translations/{cc}/{code}/{locale} — édition manuelle d'UNE locale."},"TranslationPutLocaleResponse":{"properties":{"country_code":{"type":"string","title":"Country Code"},"code":{"type":"string","title":"Code"},"locale":{"type":"string","title":"Locale"},"fields_written":{"type":"integer","title":"Fields Written"},"message":{"type":"string","title":"Message","default":"ok"}},"type":"object","required":["country_code","code","locale","fields_written"],"title":"TranslationPutLocaleResponse"},"TranslationPutRequest":{"properties":{"source_app":{"type":"string","title":"Source App","description":"Application that owns the data (universe, civicperson, academy...)"},"fields":{"additionalProperties":{"additionalProperties":{"type":"string"},"type":"object"},"type":"object","title":"Fields","description":"field_name → {locale: text}. Example: {'title': {'fr': 'Bonjour', 'en': 'Hello'}}"}},"type":"object","required":["source_app","fields"],"title":"TranslationPutRequest","description":"PUT /api/v1/translations/{country_code}/{code}"},"TranslationPutResponse":{"properties":{"country_code":{"type":"string","title":"Country Code"},"code":{"type":"string","title":"Code"},"fields_written":{"type":"integer","title":"Fields Written"},"message":{"type":"string","title":"Message","default":"ok"}},"type":"object","required":["country_code","code","fields_written"],"title":"TranslationPutResponse"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}},"securitySchemes":{"APIKeyHeader":{"type":"apiKey","in":"header","name":"Authorization"}}}}