# General Translation Platform: Téléverser des fichiers source URL: https://generaltranslation.com/fr/docs/platform/openapi/reference/files/upload-source.mdx --- title: Téléverser des fichiers source description: Téléversez un ou plusieurs fichiers source dans un projet General Translation avant de mettre la traduction en file d’attente. Référence de l’API pour le téléversement de fichiers source. method: POST --- Envoyez de 1 à 100 fichiers source par requête, avec le contenu de chaque fichier encodé en base64, afin de les ajouter à un projet pour la traduction. ## Vue d’ensemble [#overview] ```http POST https://api2.gtx.dev/v2/project/files/upload-files ``` **Autorisation** `project:files:write` · **Limite de requêtes** Moyenne (120/min) Téléversez les fichiers source (non traduits) d’un projet. Pour téléverser des fichiers déjà traduits, utilisez [Téléverser des traductions](/docs/platform/openapi/reference/files/upload-translations). Pour traduire ensuite les fichiers téléversés, consultez [Mettre les traductions en file d’attente](/docs/platform/openapi/reference/translation/queue). ## Fonctionnement [#how-it-works] * Le `content` de chaque fichier est encodé en base64 puis décodé côté serveur ; toute valeur base64 invalide est rejetée. - Pour `fileFormat: "LOTTIE"`, `content` doit être un fichier ZIP dotLottie (`.lottie`) encodé en base64. Le service stocke le bundle d’origine afin que les données d’animation traduites puissent être réassemblées avec ses images, son manifeste, son audio et ses autres ressources lors du téléchargement. * Si `fileId` est absent, il est dérivé du hachage du `fileName` ; si `versionId` est absent, il est dérivé du hachage du contenu du fichier. Ainsi, téléverser à nouveau un contenu identique est idempotent pour une version donnée. * Les fichiers sont rattachés à la branche par défaut, sauf si un `branchId` valide est fourni. Un `branchId` inconnu renvoie `400`. * Si `sourceLocale` est envoyé et diffère du paramètre régional par défaut actuel du projet, le paramètre régional par défaut du projet est mis à jour. ## Requête [#request] ### En-têtes | En-tête | Description | Obligatoire | | ----------------- | ------------------------------------------------------------------------- | ----------- | | `x-gt-api-key` | Clé API du projet ou de l’organisation. | Oui | | `x-gt-project-id` | ID du projet. Obligatoire lors de l’utilisation d’une clé d’organisation. | Non | ### Corps **Type de contenu** `application/json` | Champ | Description | Type | Facultatif | Par défaut | | --------------- | ----------------------------------------------------- | ---------- | ---------- | --------------------------------------- | | [`data`](#data) | Tableau de fichiers à téléverser (1–100). | `object[]` | Non | — | | `sourceLocale` | Paramètre régional d’origine des fichiers téléversés. | `string` | Oui | paramètre régional par défaut du projet | #### `data` [#data] **Type** `object[]` · **Obligatoire** Chaque élément est `{ "source": { ... } }`, où `source` comporte les champs suivants : | Champ | Description | Type | Facultatif | Par défaut | | ---------------- | ---------------------------------------------------------------------------------- | -------- | ---------- | --------------------- | | `content` | Contenu du fichier encodé en Base64. La taille maximale de fichier s'applique. | `string` | Non | — | | `fileName` | Nom du fichier ; ne peut pas être vide. | `string` | Non | — | | `fileFormat` | Identifiant du format de fichier (par exemple, `JSON`, `MDX` ou `LOTTIE`). | `string` | Non | — | | `locale` | Paramètre régional du contenu source ; ne peut pas être vide. | `string` | Non | — | | `dataFormat` | Format des données du contenu structuré. | `string` | Oui | — | | `fileId` | Identifiant de fichier stable. | `string` | Oui | Hachage de `fileName` | | `versionId` | Identifiant de version pour ce contenu. | `string` | Oui | Hachage du contenu | | `branchId` | Branche à laquelle rattacher le fichier. | `string` | Oui | Branche par défaut | | `formatMetadata` | Métadonnées supplémentaires spécifiques au format. | `object` | Oui | — | ## Réponse [#response] **État** `201 Created` ```json title="Response" { "uploadedFiles": [ { "branchId": "br_...", "fileId": "file_...", "versionId": "ver_...", "fileName": "en/common.json", "fileFormat": "JSON", "dataFormat": "JSON" } ], "count": 1, "message": "Successfully uploaded 1 source file(s)" } ``` ## Erreurs [#errors] | État | Cause | | ----- | ----------------------------------------------------------------------------------------------------------------------------------- | | `400` | Corps de la requête invalide, paramètre régional/format invalide, échec du décodage, fichier trop volumineux ou `branchId` inconnu. | | `401` | Clé API manquante ou invalide. | | `403` | La clé API ne dispose pas de `project:files:write`. | | `429` | Limite de requêtes dépassée. | | `503` | Serveur occupé ; réessayez avec un délai croissant. | ## Exemple [#example] ```bash curl -X POST https://api2.gtx.dev/v2/project/files/upload-files \ -H "x-gt-api-key: gtx-api-..." \ -H "Content-Type: application/json" \ -d '{ "sourceLocale": "en", "data": [ { "source": { "content": "eyJoZWxsbyI6ICJIZWxsbyJ9", "fileName": "en/common.json", "fileFormat": "JSON", "locale": "en" } } ] }' ```