# General Translation Platform: Client API
URL: https://generaltranslation.com/fr/docs/platform/core/reference/api-client.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Créez un client typé pour l'API de General Translation et appelez les utilitaires d'endpoint générés. Référence API de createApiClient.

Importez le client TypeScript depuis `generaltranslation/api` lorsque vous avez besoin d&#39;un contrôle au niveau des endpoints sans construire vous-même les requêtes HTTP. Le module associe un transport authentifié, versionné et doté de relances automatiques à des utilitaires d&#39;endpoint générés, ainsi qu&#39;à des outils opt-in pour le traitement par lots et l&#39;interrogation des tâches de traduction.

`generaltranslation/api` est disponible dans `generaltranslation` 9.2.0 et versions ultérieures. Les exemples ci-dessous ciblent `generaltranslation` 9.5.4 et le paquet standalone équivalent `@generaltranslation/api` 0.5.2.

Les utilitaires générés correspondent à la version du paquet installé, qui peut différer du [contrat OpenAPI public](/docs/platform/openapi/overview) actuellement hébergé. Consultez la référence publique pour vérifier quels endpoints et formats de fichiers sont actifs.

## Aperçu [#overview]

| Export                                                                             | Description                                                                                               |
| ---------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- |
| [`createApiClient`](#create-client)                                                | Crée un client authentifié avec gestion de la version, des nouvelles tentatives et du délai d’expiration. |
| [`ApiClientConfig`](#client-config)                                                | Configure le transport du client et les en-têtes de requête partagés.                                     |
| [`API_VERSION`](#api-version)                                                      | Version actuelle du contrat d’API envoyée par défaut.                                                     |
| [Utilitaires d’endpoint](#endpoint-helpers)                                        | Fonctions typées pour les opérations publiques répertoriées ci-dessous.                                   |
| [`paginate`](#pagination)                                                          | Parcourt tous les éléments d’une opération de liste.                                                      |
| [`awaitJobs`](#job-polling) et [`pollJobs`](#job-polling)                          | Interrogent les tâches de traduction jusqu’à leur achèvement ou l’expiration du délai.                    |
| [`processBatches`](#batch-processing) et [`DEFAULT_BATCH_SIZE`](#batch-processing) | Traitent un tableau d’entrée par lots configurables.                                                      |
| [`ApiError`](#api-error)                                                           | Erreur levée lorsqu’une réponse HTTP indique un échec.                                                    |
| [Types générés](#types-errors)                                                     | Décrivent les données des endpoints, les réponses, les erreurs et les contrats du client.                 |
| [Spécification OpenAPI publique](#openapi-spec)                                    | Contrat actuel de l’API hébergée.                                                                         |

## `createApiClient` [#create-client]

```ts
function createApiClient(config: ApiClientConfig): Client;
```

Le client ajoute la version d&#39;API configurée, la clé API et l&#39;ID du projet à chaque requête. Transmettez-le à un utilitaire d&#39;endpoint généré :

```ts title="project-info.ts"
import { createApiClient, getProjectInfo } from 'generaltranslation/api';

const projectId = process.env.GT_PROJECT_ID!;
const client = createApiClient({
  apiKey: process.env.GT_API_KEY,
  baseUrl: 'https://api.gtx.dev',
  projectId,
});

const result = await getProjectInfo({
  client,
  path: { projectId },
});

if (result.error) {
  throw new Error('Could not load Project information');
}

console.log(result.data);
```

Les exemples ci-dessous réutilisent ce `client` configuré.

## `ApiClientConfig` [#client-config]

| Option                        | Description                                                                                 | Type                                  | Facultatif | Valeur par défaut  |
| ----------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------- | ---------- | ------------------ |
| [`apiKey`](#apikey)           | Clé API envoyée dans l’en-tête `Authorization`.                                             | `string`                              | Oui        | —                  |
| [`apiVersion`](#apiversion)   | Version du contrat envoyée via `gt-api-version`.                                            | `ApiVersion`                          | Oui        | `API_VERSION`      |
| [`baseUrl`](#baseurl)         | Origine de l’API.                                                                           | `string`                              | Non        | —                  |
| [`fetch`](#fetch)             | Implémentation personnalisée de l’API Fetch.                                                | `typeof fetch`                        | Oui        | `globalThis.fetch` |
| [`projectId`](#projectid)     | ID du projet envoyé via `gt-project-id`.                                                    | `string`                              | Oui        | —                  |
| [`retryPolicy`](#retrypolicy) | Stratégie de délai entre les tentatives.                                                    | `'exponential' \| 'linear' \| 'none'` | Oui        | `'exponential'`    |
| [`timeoutMs`](#timeoutms)     | Délai d’expiration par tentative, ou `false` pour désactiver le délai d’expiration intégré. | `number \| false`                     | Oui        | `60000`            |

### `apiKey`

**Type** `string` · **facultatif**

Clé API envoyée sous la forme `Authorization: Bearer <api-key>`. Le client ne lit pas automatiquement les variables d&#39;environnement.

### `apiVersion`

**Type** `ApiVersion` · **Facultatif** · **Default** `API_VERSION`

Version du contrat d&#39;API envoyée dans le header `gt-api-version`.

### `baseUrl`

**Type** `string` · **Requis**

Origine de l&#39;API. Utilisez `https://api.gtx.dev` pour l&#39;API de General Translation hébergée.

### `fetch`

**Type** `typeof fetch` · **Facultatif** · **Default** `globalThis.fetch`

Implémentation personnalisée de l&#39;API Fetch. À utiliser pour l&#39;instrumentation, les tests ou un environnement d&#39;exécution dépourvu d&#39;implémentation globale de fetch.

### `projectId`

**Type** `string` · **Facultatif**

ID du projet envoyé dans le en-tête `gt-project-id`. Les clés d&#39;organisation nécessitent ce en-tête pour les endpoints au niveau projet qui ne contiennent pas l&#39;ID du projet dans le chemin.

### `retryPolicy`

**Type** `'exponential' | 'linear' | 'none'` · **Facultatif** · **Valeur par défaut** `'exponential'`

En cas d’erreur réseau ou de réponse `5xx`, les requêtes GET, HEAD, OPTIONS, PUT et DELETE sont relancées jusqu’à trois fois après la première tentative. Les requêtes POST ne sont pas relancées en cas d’échec de ce type, même pour des opérations logiquement en lecture seule. Toutes les méthodes peuvent être relancées en cas de réponse `429`. Définissez cette option sur `'none'` pour désactiver les nouvelles tentatives au niveau du transport.

Pour les réponses `429`, le délai est déterminé par `Retry-After` (en secondes ou sous forme de date HTTP), à défaut par `RateLimit-Reset` (en secondes), et sinon par une valeur de secours de 60 secondes. Les autres délais exponentiels sont de 500, 1000 et 2000 ms ; les délais linéaires sont de 500, 1000 et 1500 ms. Les temps d’attente entre les tentatives ne tiennent pas compte des signaux d’annulation : une annulation n’interrompt donc pas nécessairement une attente en cours.

La traduction à l’exécution par classe désactive ces nouvelles tentatives au niveau du transport, y compris pour les réponses `429`. L’utilitaire de traduction à l’exécution généré s’appuie quant à lui sur la politique de nouvelles tentatives du client fourni.

### `timeoutMs`

**Type** `number | false` · **Facultatif** · **Valeur par défaut** `60000`

Délai d&#39;expiration en millisecondes pour chaque tentative de requête. Si l&#39;option est omise, la valeur 60000 s&#39;applique ; `0` signifie littéralement zéro. Définissez-le sur `false` pour désactiver le minuteur intégré ; cela n&#39;empêche pas l&#39;annulation par l&#39;appelant ou par un `fetch` personnalisé. Il ne s&#39;agit pas d&#39;un délai global pour l&#39;ensemble de l&#39;opération, incluant les nouvelles tentatives et le traitement de la réponse. Les implémentations de `fetch` doivent respecter le signal fourni.

Ces paramètres ne font pas partie des options du constructeur [`GT`](/docs/platform/core/reference/gt-class/constructor). (Voir [Configuration de la traduction](/docs/platform/core/reference/types/translation-config).)

## `API_VERSION` [#api-version]

**Type** `ApiVersion`

La version de contrat par défaut actuelle est `2026-03-06.v1`. Indiquez une autre version prise en charge via `apiVersion` si vous maintenez une integration basée sur un contrat de réponse plus ancien.

## Utilitaires d&#39;endpoint [#endpoint-helpers]

Les utilitaires générés acceptent un seul objet contenant le `client` partagé ainsi que les champs `body`, `headers`, `path` et `query` de l&#39;endpoint, le cas échéant. Par défaut, ils renvoient `{ data, error, request, response }`.

```ts title="project-info.ts"
import { getProjectInfo } from 'generaltranslation/api';

const result = await getProjectInfo({
  client,
  path: { projectId: 'your-project-id' },
  throwOnError: true,
});

console.log(result.data.name);
```

Les options générées les plus courantes sont :

| Option          | Description                                                                 | Type                        | Facultatif | Valeur par défaut |
| --------------- | --------------------------------------------------------------------------- | --------------------------- | ---------- | ----------------- |
| `client`        | Client renvoyé par `createApiClient`.                                       | `Client`                    | Non        | —                 |
| `body`          | Body de requête JSON typé.                                                  | Spécifique à l&#39;endpoint | Variable   | —                 |
| `path`          | Paramètres de chemin typés.                                                 | Spécifique à l&#39;endpoint | Variable   | —                 |
| `query`         | Paramètres de requête typés.                                                | Spécifique à l&#39;endpoint | Variable   | —                 |
| `headers`       | En-têtes propres à l&#39;appel, qui remplacent ceux du client partagé.      | Spécifique à l&#39;endpoint | Oui        | —                 |
| `throwOnError`  | Lever une exception en cas de réponse en échec au lieu de renvoyer `error`. | `boolean`                   | Oui        | `false`           |
| `responseStyle` | Renvoyer tous les champs de la réponse ou uniquement les données analysées. | `'fields' \| 'data'`        | Oui        | `'fields'`        |
| `signal`        | Annuler la requête à l&#39;aide d&#39;un signal de l&#39;API Fetch.         | `AbortSignal`               | Oui        | —                 |
| `meta`          | Valeurs exposées aux intégrations client personnalisées.                    | `Record<string, unknown>`   | Oui        | —                 |

Le SDK 0.5.2 installé fournit des utilitaires générés pour les 48 opérations publiques suivantes :

| Fonction                                                                                                              | Opération                                                                           |
| --------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
| [`listProjects`](/docs/platform/openapi/reference/project/list-projects)                                              | Lister une page de projets sélectionnés en fonction de la liaison de la clé API.    |
| [`listOrgs`](/docs/platform/openapi/reference/project/list-orgs)                                                      | Lister l&#39;organisation associée à une clé API d&#39;organisation ou de projet.   |
| [`createProject`](/docs/platform/openapi/reference/project/create-project)                                            | Créer un projet dans une organisation sélectionnée.                                 |
| [`createProjectApiKey`](/docs/platform/openapi/reference/project/create-api-key)                                      | Créer une clé API de projet dont les permissions sont déléguées par l&#39;appelant. |
| [`uploadSourceFiles`](/docs/platform/openapi/reference/files/upload-source)                                           | Téléverser des fichiers sources.                                                    |
| [`uploadTranslations`](/docs/platform/openapi/reference/files/upload-translations)                                    | Téléverser des fichiers traduits liés à des fichiers sources existants.             |
| `uploadAssets`                                                                                                        | Téléverser les assets du projet.                                                    |
| `submitUserEditDiffs`                                                                                                 | Soumettre les modifications locales de traduction.                                  |
| `generateProjectContext`                                                                                              | Générer le contexte du projet.                                                      |
| `enqueueFileTranslations`                                                                                             | Mettre en file d&#39;attente des fichiers téléversés pour traduction.               |
| `publishFiles`                                                                                                        | Publier ou dépublier des fichiers.                                                  |
| [`downloadFile`](/docs/platform/openapi/reference/files/download)                                                     | Télécharger un fichier.                                                             |
| `downloadFiles`                                                                                                       | Télécharger plusieurs fichiers.                                                     |
| `getBranchInfo`                                                                                                       | Lire les informations d&#39;une branche.                                            |
| `createBranch`                                                                                                        | Créer une branche.                                                                  |
| [`createTag`](/docs/platform/openapi/reference/project/upsert-tag)                                                    | Créer ou mettre à jour un tag.                                                      |
| `getProjectInfo`                                                                                                      | Lire les informations du projet.                                                    |
| `updateProjectInfo`                                                                                                   | Mettre à jour les informations du projet.                                           |
| `getTranslationJobInfo`                                                                                               | Lire l&#39;état d&#39;une tâche de traduction.                                      |
| [`translate`](/docs/platform/openapi/reference/translation/translate-runtime)                                         | Traduire du contenu à l&#39;exécution.                                              |
| `getFileInfo`                                                                                                         | Lire les métadonnées d&#39;un fichier.                                              |
| `getTranslationStatus`                                                                                                | Lire l&#39;état de traduction d&#39;un fichier.                                     |
| `processFileMoves`                                                                                                    | Déplacer ou renommer des fichiers.                                                  |
| `getOrphanedFiles`                                                                                                    | Repérer les fichiers orphelins.                                                     |
| [`listContextGroups`](/docs/platform/openapi/reference/context-management/list-groups)                                | Lister les Context Groups d&#39;une organisation.                                   |
| [`createContextGroup`](/docs/platform/openapi/reference/context-management/create-group)                              | Créer un Context Group.                                                             |
| [`getContextGroup`](/docs/platform/openapi/reference/context-management/get-group)                                    | Lire un Context Group.                                                              |
| [`updateContextGroup`](/docs/platform/openapi/reference/context-management/update-group)                              | Mettre à jour un Context Group.                                                     |
| [`deleteContextGroup`](/docs/platform/openapi/reference/context-management/delete-group)                              | Supprimer un Context Group.                                                         |
| [`listProjectContextGroups`](/docs/platform/openapi/reference/context-management/list-project-groups)                 | Lister les Context Groups attribués à un projet.                                    |
| [`getProjectContextGroup`](/docs/platform/openapi/reference/context-management/get-project-group)                     | Lire un Context Group assigné.                                                      |
| [`assignContextGroup`](/docs/platform/openapi/reference/context-management/assign-group)                              | Assigner un Context Group à un projet.                                              |
| [`unassignContextGroup`](/docs/platform/openapi/reference/context-management/unassign-group)                          | Retirer un Context Group d&#39;un projet.                                           |
| [`reorderContextGroup`](/docs/platform/openapi/reference/context-management/reorder-group)                            | Modifier la priorité d&#39;un Context Group assigné.                                |
| [`listContextGlossary`](/docs/platform/openapi/reference/context-management/list-glossary)                            | Lister les termes du glossaire d&#39;un Context Group.                              |
| [`upsertContextGlossary`](/docs/platform/openapi/reference/context-management/upsert-glossary)                        | Créer ou mettre à jour des termes du glossaire.                                     |
| [`getContextGlossaryEntry`](/docs/platform/openapi/reference/context-management/get-glossary-entry)                   | Lire un terme du glossaire.                                                         |
| [`updateContextGlossaryEntry`](/docs/platform/openapi/reference/context-management/update-glossary-entry)             | Mettre à jour un terme du glossaire.                                                |
| [`deleteContextGlossaryEntry`](/docs/platform/openapi/reference/context-management/delete-glossary-entry)             | Supprimer un terme du glossaire.                                                    |
| [`listContextGlossaryTranslations`](/docs/platform/openapi/reference/context-management/list-glossary-translations)   | Lister les traductions d&#39;un terme du glossaire.                                 |
| [`setContextGlossaryTranslation`](/docs/platform/openapi/reference/context-management/set-glossary-translation)       | Définir la traduction d&#39;un terme du glossaire.                                  |
| [`deleteContextGlossaryTranslation`](/docs/platform/openapi/reference/context-management/delete-glossary-translation) | Supprimer la traduction d&#39;un terme du glossaire.                                |
| [`listContextCustomPrompts`](/docs/platform/openapi/reference/context-management/list-custom-prompts)                 | Lister les instructions personnalisées d&#39;un Context Group.                      |
| [`upsertContextCustomPrompts`](/docs/platform/openapi/reference/context-management/upsert-custom-prompts)             | Créer ou mettre à jour des instructions personnalisées.                             |
| [`updateContextCustomPrompt`](/docs/platform/openapi/reference/context-management/update-custom-prompt)               | Mettre à jour une instruction personnalisée.                                        |
| [`deleteContextCustomPrompt`](/docs/platform/openapi/reference/context-management/delete-custom-prompt)               | Supprimer une instruction personnalisée.                                            |
| [`importContextContent`](/docs/platform/openapi/reference/context-management/import-content)                          | Importer des termes du glossaire et des instructions personnalisées.                |
| [`exportContextContent`](/docs/platform/openapi/reference/context-management/export-content)                          | Exporter des termes du glossaire et des instructions personnalisées.                |

<Callout type="info">
  **Modifié en v0.5.2 :** le client généré ajoute des utilitaires Context Management pour les Context Groups, les affectations, les termes du glossaire, les instructions personnalisées, ainsi que les imports et exports.

  **Modifié en v0.5.0 :** les réponses de liste renvoient `items` au lieu de `projects` ou `orgs`, conformément à l&#39;API actuelle. Les appels `throwOnError` en échec lèvent une [`ApiError`](#api-error) au lieu du body de réponse décodé.

  **Modifié en v0.3.0 :** `encodeBase64`, `decodeBase64`, `encodeFileContent` et `decodeFileContent` ne sont plus exportés. Encodez le contenu du fichier avant de le transmettre à un utilitaire de téléversement généré.

  **Modifié en v0.2.1 :** [`createProject`](/docs/platform/openapi/reference/project/create-project) requiert désormais `path.orgId` et appelle `POST /v2/orgs/{orgId}/projects`. Cette version ajoute également [`createProjectApiKey`](/docs/platform/openapi/reference/project/create-api-key) et supprime `shouldGenerateProjectContext` et `getProjectContextGenerationStatus`.
</Callout>

Utilisez `generateProjectContext` avec `getTranslationJobInfo` pour les tâches de contexte. L&#39;utilitaire [`downloadFile`](/docs/platform/openapi/reference/files/download) reste déprécié ; utilisez `downloadFiles` pour télécharger aussi bien un lot de fichiers qu&#39;un fichier unique.

Consultez la [référence OpenAPI publique](/docs/platform/openapi/overview) pour connaître les permissions des endpoints, les limites de débit, les schémas et les codes de statut en vigueur.

### Découverte et provisionnement

Utilisez [`listOrgs`](/docs/platform/openapi/reference/project/list-orgs) pour trouver l&#39;organisation associée à votre clé API. Les clés d&#39;organisation et les clés de projet sont toutes deux acceptées ; aucune permission de création de projet n&#39;est requise pour cette recherche.

La découverte de projets renvoie une seule page, déterminée par le rattachement de la clé API : une clé de projet renvoie son projet, tandis qu&#39;une clé d&#39;organisation renvoie les projets de son organisation. Aucune permission sur une ressource n&#39;est requise. Utilisez [`paginate`](#pagination) pour parcourir l&#39;ensemble des projets :

```ts title="list-projects.ts"
import { listProjects, paginate } from 'generaltranslation/api';

for await (const project of paginate(listProjects, {
  client,
  query: { limit: 100 },
})) {
  console.log(project.id, project.name);
}
```

La création d&#39;un projet nécessite une clé d&#39;organisation disposant de la permission `org:projects:create` et accepte `path: { orgId }` ainsi que `body: { name, defaultLocale, cdnEnabled? }`.

Pour [`createProjectApiKey`](/docs/platform/openapi/reference/project/create-api-key), sélectionnez explicitement des `permissions` selon le principe du moindre privilège. Si vous les omettez, la requête demande toutes les permissions de projet délégables dont dispose l&#39;appelant ; vous devez disposer de chacune des permissions sélectionnées. Stockez le secret renvoyé en lieu sûr et ne l&#39;écrivez jamais dans les journaux.

Ces utilitaires générés de découverte et de création ne sont pas des méthodes de [`GT`](/docs/platform/core/reference/gt-class/constructor).

## `paginate` [#pagination]

```ts
function paginate<
  Options extends {
    client?: Client;
    query?: { cursor?: string; limit?: number };
  },
  Item,
>(
  list: (options: Options & { throwOnError: true }) => Promise<{
    data: { items: Item[]; nextCursor: string | null };
  }>,
  options: Options
): AsyncGenerator<Item>;
```

`paginate` produit chaque élément d&#39;une opération de liste telle que [`listProjects`](/docs/platform/openapi/reference/project/list-projects) ou [`listOrgs`](/docs/platform/openapi/reference/project/list-orgs), en transmettant `options` à chaque requête de page. La page suivante n&#39;est demandée que lorsque l&#39;itération l&#39;atteint ; sortir de la boucle met donc fin aux requêtes. Pour reprendre, passez un `nextCursor` enregistré dans `query.cursor`. Une page en échec lève une exception, comme un appel avec `throwOnError`.

Les pages étant lues indépendamment les unes des autres, des éléments modifiés pendant l&#39;itération peuvent être omis ou renvoyés plusieurs fois.

## Interrogation des tâches [#job-polling]

[`awaitJobs`](#job-polling) utilise un client configuré pour appeler `getTranslationJobInfo` jusqu&#39;à ce que chaque tâche demandée soit terminée, en échec, inconnue ou manquante, ou jusqu&#39;à l&#39;expiration du délai global.

```ts
function awaitJobs(
  client: Client,
  jobIds: readonly string[],
  options?: AwaitJobsOptions
): Promise<AwaitJobsResult>;
```

| Option                   | Description                                                                                 | Type                                                | Facultatif | Valeur par défaut |
| ------------------------ | ------------------------------------------------------------------------------------------- | --------------------------------------------------- | ---------- | ----------------- |
| `pollingIntervalSeconds` | Délai entre les requêtes d&#39;état.                                                        | `number`                                            | Oui        | `5`               |
| `timeoutSeconds`         | Délai d&#39;expiration global d&#39;interrogation.                                          | `number`                                            | Oui        | `600`             |
| `onPoll`                 | Reçoit chaque réponse d&#39;état brute réussie avant l&#39;enregistrement des états finaux. | `(statuses: GetTranslationJobInfoResponse) => void` | Oui        | —                 |

```ts
import {
  awaitJobs,
  enqueueFileTranslations,
} from 'generaltranslation/api';

const result = await enqueueFileTranslations({
  client,
  body: {
    files: [{ fileId: 'homepage', versionId: 'version-1' }],
    sourceLocale: 'en',
    targetLocales: ['es'],
  },
  throwOnError: true,
});

if (!('jobData' in result.data)) {
  throw new Error('Expected the current enqueue response');
}

const jobs = await awaitJobs(client, Object.keys(result.data.jobData));

if (!jobs.complete) {
  console.warn('Translation jobs did not finish before the timeout');
}
```

`AwaitJobsResult` contient `complete`, qui vaut `false` uniquement lorsque l&#39;interrogation expire, et `jobs`, qui contient le dernier résultat pour chaque ID demandé. Une tâche manquante reçoit l&#39;état `unknown`. Passer un tableau vide résout immédiatement avec `{ complete: true, jobs: [] }`.

Une erreur de l&#39;API ou du status loader survenant avant l&#39;échéance globale rejette la promesse d&#39;interrogation. Si la requête échoue une fois l&#39;échéance dépassée, l&#39;interrogation renvoie les derniers résultats avec `complete: false`.

`pollJobs` expose la même boucle d&#39;interrogation avec un status loader injecté :

```ts
function pollJobs(
  jobIds: readonly string[],
  getJobStatuses: GetJobStatuses,
  options?: AwaitJobsOptions
): Promise<AwaitJobsResult>;

type GetJobStatuses = (
  jobIds: string[],
  signal: AbortSignal
) => Promise<GetTranslationJobInfoResponse>;
```

Utilisez-le lorsque vous avez besoin d&#39;une normalisation personnalisée des requêtes ou des erreurs. Les interrogations sont séquentielles et ne portent que sur les ID en attente. Le loader reçoit un signal d&#39;abandon plafonné par le délai global restant et par une limite de 60 secondes par interrogation. Les résultats tardifs sont ignorés ; à l&#39;expiration du délai, les derniers états acceptés sont renvoyés, et ceux-ci peuvent encore indiquer une tâche en file d&#39;attente, en cours de traitement ou initialement inconnue. Un loader qui ignore le signal peut retarder la résolution.

`complete: true` signifie qu&#39;aucune tâche n&#39;est en attente, et non que toutes les tâches ont réussi. Vérifiez chaque état avant d&#39;utiliser les résultats. Les deux utilitaires d&#39;interrogation de l&#39;API acceptent `onPoll`, contrairement aux options de la méthode de classe [`awaitJobs`](/docs/platform/core/reference/gt-class-methods/translation/await-jobs). Aucune option d&#39;interrogation ne permet de transmettre un signal fourni par l&#39;appelant, et l&#39;arrêt de l&#39;interrogation locale n&#39;annule pas les tâches distantes.

## Traitement par lots [#batch-processing]

`processBatches` découpe un tableau d&#39;entrée en blocs, appelle votre processeur pour chaque bloc, puis aplatit les tableaux renvoyés en respectant l&#39;ordre des lots.

```ts
function processBatches<TInput, TOutput>(
  items: readonly TInput[],
  processBatch: (batch: TInput[]) => Promise<TOutput[]>,
  options?: BatchOptions
): Promise<TOutput[]>;
```

| Option      | Description                                                                              | Type      | Facultatif | Valeur par défaut    |
| ----------- | ---------------------------------------------------------------------------------------- | --------- | ---------- | -------------------- |
| `batchSize` | Nombre de valeurs d&#39;entrée dans chaque lot. Fournissez une valeur supérieure à zéro. | `number`  | Oui        | `DEFAULT_BATCH_SIZE` |
| `parallel`  | Traite tous les lots simultanément plutôt que séquentiellement.                          | `boolean` | Oui        | `true`               |

`DEFAULT_BATCH_SIZE` vaut `100`.

Si un processeur de lot échoue, `processBatches` échoue également. En traitement parallèle, les autres lots déjà démarrés se poursuivent indépendamment.

```ts
import { Buffer } from 'node:buffer';
import {
  processBatches,
  uploadSourceFiles,
} from 'generaltranslation/api';

// Les utilitaires d'endpoint générés attendent un contenu de fichier encodé pour le transport.
const content = Buffer.from('{"greeting":"Hello"}', 'utf8').toString('base64');
const files = [{
  source: {
    content,
    fileName: 'en.json',
    fileFormat: 'JSON' as const,
    locale: 'en',
  },
}];

const results = await processBatches(files, async (batch) => {
  const result = await uploadSourceFiles({
    client,
    body: { data: batch },
    throwOnError: true,
  });
  return result.data.uploadedFiles;
});
```

## Types et erreurs [#types-errors]

Le module exporte `Client`, `Options`, `ApiClientConfig`, `ApiVersion`, `RetryPolicy`, `AwaitJobsOptions`, `AwaitJobsResult`, `GetJobStatuses`, `JobResult`, `BatchOptions`, `RuntimeFileFormat`, ainsi que les types OpenAPI générés pour les opérations publiques listées ci-dessus.

Pour chaque opération publique listée ci-dessus, le paquet exporte :

* `<Operation>Data` pour les entrées typées de body, headers, path et query.
* `<Operation>Errors` pour la table des erreurs documentées par code d’état.
* `<Operation>Error` pour l’union des erreurs documentées.
* `<Operation>Responses` pour la table des réponses réussies documentées par code d’état.
* `<Operation>Response` pour l’union des réponses réussies documentées.

Avec la valeur par défaut `throwOnError: false`, une opération générée renvoie soit `data`, soit `error`, accompagné de la `request` de l’API Fetch. Une réponse HTTP inclut `response` ; si l’échec survient avant la réception d’une réponse, cette valeur reste indéfinie. Avec `throwOnError: true`, une réponse d’erreur HTTP provenant d’un client `createApiClient` lève une [`ApiError`](#api-error). En cas d’échec réseau ou d’annulation, l’erreur d’origine est levée ; le délai d’expiration intégré lève `Error('Request timed out after <timeoutMs>ms')`.

### `ApiError` [#api-error]

Avec un client `createApiClient`, les réponses HTTP en échec issues des appels `throwOnError`, de [`paginate`](#pagination), de [`awaitJobs`](#job-polling) et des méthodes de la classe [`GT`](/docs/platform/core/reference/gt-class/constructor) lèvent une `ApiError`, avec `name: 'ApiError'`, le code d&#39;état HTTP au format numérique dans `code`, ainsi que `message`. Importez-la depuis `generaltranslation/api` ou `generaltranslation/errors`. Les appels sans `throwOnError` continuent de renvoyer le body décodé de la réponse dans `error`. Les échecs liés au réseau, à la configuration, à une annulation ou à un délai d’expiration peuvent faire échouer (rejeter) l&#39;appel de méthode de classe dans son ensemble ; il ne s&#39;agit pas nécessairement d&#39;échecs de traduction propres à un élément donné.

```ts
import { ApiError } from 'generaltranslation/errors';

export function describeFailure(error: unknown): string {
  return error instanceof ApiError
    ? `${error.code}: ${error.message}`
    : String(error);
}
```

## Spécification OpenAPI [#openapi-spec]

Utilisez [`/openapi.json`](/openapi.json) pour obtenir le contrat actuel de l&#39;API publique hébergée. La [référence OpenAPI](/docs/platform/openapi/overview) décrit les permissions des endpoints, les schémas de requête et les réponses.

## Sitemap

See the full [sitemap](https://generaltranslation.com/sitemap.md) for all pages.
