# General Translation Platform: Client API
URL: https://generaltranslation.com/it/docs/platform/core/reference/api-client.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Crea un client tipizzato per la General Translation API e richiama gli helper degli endpoint generati. Riferimento API per createApiClient.

Importa il client TypeScript da `generaltranslation/api` quando ti serve un controllo a livello di endpoint senza dover costruire manualmente le richieste HTTP. Il modulo combina un livello di trasporto autenticato, versionato e con ritentativi automatici con gli helper degli endpoint generati e con utilità opt-in per il batch e il polling dei job di traduzione.

`generaltranslation/api` è disponibile in `generaltranslation` 9.2.0 e versioni successive. Gli esempi seguenti fanno riferimento a `generaltranslation` 9.5.4 e all&#39;equivalente package autonomo `@generaltranslation/api` 0.5.2.

Gli helper generati rispecchiano la versione del package installato, che può differire dall&#39;attuale [contratto OpenAPI pubblico](/docs/platform/openapi/overview) ospitato. Consulta il riferimento pubblico per verificare quali endpoint e formati di file sono attivi.

## Overview [#overview]

| Export                                                                            | Description                                                                               |
| --------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
| [`createApiClient`](#create-client)                                               | Crea un client autenticato con gestione di versione, retry e timeout.                     |
| [`ApiClientConfig`](#client-config)                                               | Configura il trasporto del client e gli header di richiesta condivisi.                    |
| [`API_VERSION`](#api-version)                                                     | Versione corrente del contratto API inviata per impostazione predefinita.                 |
| [helper degli endpoint](#endpoint-helpers)                                        | Funzioni tipizzate per le operazioni pubbliche elencate di seguito.                       |
| [`paginate`](#pagination)                                                         | Itera su tutti gli elementi di un&#39;operazione di elenco.                               |
| [`awaitJobs`](#job-polling) e [`pollJobs`](#job-polling)                          | Eseguono il polling dei translation job fino al completamento o allo scadere del timeout. |
| [`processBatches`](#batch-processing) e [`DEFAULT_BATCH_SIZE`](#batch-processing) | Elaborano un array di input in batch configurabili.                                       |
| [`ApiError`](#api-error)                                                          | Errore generato quando una risposta HTTP non va a buon fine.                              |
| [Generated types](#types-errors)                                                  | Descrivono dati degli endpoint, risposte, errori e contratti del client.                  |
| [Specifica OpenAPI pubblica](#openapi-spec)                                       | Contratto API attualmente ospitato.                                                       |

## `createApiClient` [#create-client]

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

Il client aggiunge la versione dell&#39;API configurata, la chiave API e l&#39;ID progetto a ogni richiesta. Passalo a un helper degli endpoint generato:

```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);
```

Gli esempi che seguono riutilizzano questo `client` configurato.

## `ApiClientConfig` [#client-config]

| Opzione                       | Descrizione                                                                         | Tipo                                  | Facoltativo | Predefinito        |
| ----------------------------- | ----------------------------------------------------------------------------------- | ------------------------------------- | ----------- | ------------------ |
| [`apiKey`](#apikey)           | Chiave API inviata nell&#39;header `Authorization`.                                 | `string`                              | Sì          | —                  |
| [`apiVersion`](#apiversion)   | Versione del contratto inviata come `gt-api-version`.                               | `ApiVersion`                          | Sì          | `API_VERSION`      |
| [`baseUrl`](#baseurl)         | Origine dell&#39;API.                                                               | `string`                              | No          | —                  |
| [`fetch`](#fetch)             | Implementazione personalizzata della Fetch API.                                     | `typeof fetch`                        | Sì          | `globalThis.fetch` |
| [`projectId`](#projectid)     | ID progetto inviato come `gt-project-id`.                                           | `string`                              | Sì          | —                  |
| [`retryPolicy`](#retrypolicy) | Strategia di ritardo tra i tentativi.                                               | `'exponential' \| 'linear' \| 'none'` | Sì          | `'exponential'`    |
| [`timeoutMs`](#timeoutms)     | Timeout per singolo tentativo, oppure `false` per disattivare il timeout integrato. | `number \| false`                     | Sì          | `60000`            |

### `apiKey`

**tipo** `string` · **Facoltativo**

Chiave API inviata come `Authorization: Bearer <api-key>`. Il client non legge automaticamente le variabili d&#39;ambiente.

### `apiVersion`

**Type** `ApiVersion` · **Facoltativo** · **Default** `API_VERSION`

Versione del contratto API inviata nell&#39;header `gt-api-version`.

### `baseUrl`

**Type** `string` · **Required**

Origine dell&#39;API. Usa `https://api.gtx.dev` per la General Translation API in hosting.

### `fetch`

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

Implementazione personalizzata della Fetch API. Utilizzala per strumentazione, test o per un runtime privo di un&#39;implementazione globale di fetch.

### `projectId`

**tipo** `string` · **Facoltativo**

ID progetto inviato nell&#39;header `gt-project-id`. Le chiavi di organizzazione richiedono questo header per gli endpoint con scope di progetto che non includono l&#39;ID progetto nel percorso.

### `retryPolicy`

**Tipo** `'exponential' | 'linear' | 'none'` · **Opzionale** · **Predefinito** `'exponential'`

GET, HEAD, OPTIONS, PUT e DELETE ripetono la richiesta in caso di errori di rete e risposte `5xx` fino a tre volte dopo il primo tentativo. POST non ripete la richiesta in caso di questi errori, nemmeno per operazioni logicamente di sola lettura. Tutti i metodi possono ripetere la richiesta in caso di risposte `429`. Imposta questo valore su `'none'` per disabilitare i nuovi tentativi a livello di trasporto.

Per `429`, il ritardo viene ricavato da `Retry-After` (in secondi o come data HTTP), poi da `RateLimit-Reset` (in secondi) e infine da un valore di fallback di 60 secondi. Gli altri ritardi esponenziali sono di 500, 1000 e 2000 ms; quelli lineari sono di 500, 1000 e 1500 ms. Le attese tra un tentativo e l&#39;altro non rispondono ai segnali di interruzione, quindi non è garantito che l&#39;annullamento interrompa immediatamente un&#39;attesa in corso.

La traduzione runtime della classe disabilita questi nuovi tentativi a livello di trasporto, incluso `429`. L&#39;helper generato per la traduzione runtime utilizza invece la policy di retry del client fornito.

### `timeoutMs`

**tipo** `number | false` · **Optional** · **Default** `60000`

Timeout in millisecondi per ogni tentativo di request. Se omesso, viene usato 60000; `0` indica letteralmente zero. Impostalo su `false` per disattivare il timer integrato; l&#39;annullamento da parte del chiamante o di un `fetch` personalizzato resta attivo. Non si tratta di una scadenza complessiva dell&#39;operazione che comprenda i nuovi tentativi e l&#39;elaborazione della risposta. Le implementazioni di `fetch` devono rispettare il segnale fornito.

Queste impostazioni non sono opzioni del costruttore di [`GT`](/docs/platform/core/reference/gt-class/constructor). (Vedi [Configurazione della traduzione](/docs/platform/core/reference/types/translation-config)).

## `API_VERSION` [#api-version]

**Type** `ApiVersion`

L&#39;attuale versione predefinita del contratto è `2026-03-06.v1`. Specifica una diversa versione supportata tramite `apiVersion` se mantieni un&#39;integrazione basata su un contratto di risposta precedente.

## Helper degli endpoint [#endpoint-helpers]

Gli helper generati accettano un oggetto contenente il `client` condiviso e, ove applicabili, i field `body`, `headers`, `path` e `query` dell&#39;endpoint. Per impostazione predefinita restituiscono `{ 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);
```

Le opzioni generate più comuni includono:

| Option          | Description                                                                             | tipo                        | facoltativo | Default    |
| --------------- | --------------------------------------------------------------------------------------- | --------------------------- | ----------- | ---------- |
| `client`        | Client restituito da `createApiClient`.                                                 | `Client`                    | No          | —          |
| `body`          | Body della richiesta JSON tipizzato.                                                    | Specifico dell&#39;endpoint | Variabile   | —          |
| `path`          | Parametri di percorso tipizzati.                                                        | Specifico dell&#39;endpoint | Variabile   | —          |
| `query`         | Parametri di query tipizzati.                                                           | Specifico dell&#39;endpoint | Variabile   | —          |
| `headers`       | Header per singola riuscita che sovrascrivono gli header condivisi del client.          | Specifico dell&#39;endpoint | Sì          | —          |
| `throwOnError`  | Solleva un&#39;eccezione in caso di risposta non riuscita invece di restituire `error`. | `boolean`                   | Sì          | `false`    |
| `responseStyle` | Restituisce tutti i campi della risposta oppure solo i dati analizzati.                 | `'fields' \| 'data'`        | Sì          | `'fields'` |
| `signal`        | Annulla la richiesta con un segnale della Fetch API.                                    | `AbortSignal`               | Sì          | —          |
| `meta`          | Valori esposti alle integrazioni client personalizzate.                                 | `Record<string, unknown>`   | Sì          | —          |

L&#39;SDK 0.5.2 installato fornisce helper generati per queste 48 operazioni pubbliche:

| Function                                                                                                              | Operation                                                                                  |
| --------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ |
| [`listProjects`](/docs/platform/openapi/reference/project/list-projects)                                              | Elenca una pagina di progetti selezionati in base all&#39;associazione della chiave API.   |
| [`listOrgs`](/docs/platform/openapi/reference/project/list-orgs)                                                      | Elenca l&#39;Organization associata a una chiave API dell&#39;Organization o del progetto. |
| [`createProject`](/docs/platform/openapi/reference/project/create-project)                                            | Crea un progetto in un&#39;Organization selezionata.                                       |
| [`createProjectApiKey`](/docs/platform/openapi/reference/project/create-api-key)                                      | Crea una chiave API del progetto con le autorizzazioni delegate dal chiamante.             |
| [`uploadSourceFiles`](/docs/platform/openapi/reference/files/upload-source)                                           | Carica i file sorgente.                                                                    |
| [`uploadTranslations`](/docs/platform/openapi/reference/files/upload-translations)                                    | Carica i file tradotti collegati ai file sorgente esistenti.                               |
| `uploadAssets`                                                                                                        | Carica le risorse del progetto.                                                            |
| `submitUserEditDiffs`                                                                                                 | Invia le modifiche di traduzione locali.                                                   |
| `generateProjectContext`                                                                                              | Genera il contesto del progetto.                                                           |
| `enqueueFileTranslations`                                                                                             | Accoda i file caricati per la traduzione.                                                  |
| `publishFiles`                                                                                                        | Pubblica o annulla la pubblicazione dei file.                                              |
| [`downloadFile`](/docs/platform/openapi/reference/files/download)                                                     | Scarica un singolo file.                                                                   |
| `downloadFiles`                                                                                                       | Scarica più file.                                                                          |
| `getBranchInfo`                                                                                                       | Legge le informazioni sul branch.                                                          |
| `createBranch`                                                                                                        | Crea un branch.                                                                            |
| [`createTag`](/docs/platform/openapi/reference/project/upsert-tag)                                                    | Crea o aggiorna un tag.                                                                    |
| `getProjectInfo`                                                                                                      | Legge le informazioni sul progetto.                                                        |
| `updateProjectInfo`                                                                                                   | Aggiorna le informazioni sul progetto.                                                     |
| `getTranslationJobInfo`                                                                                               | Legge lo stato di un job di traduzione.                                                    |
| [`translate`](/docs/platform/openapi/reference/translation/translate-runtime)                                         | Traduce contenuti a runtime.                                                               |
| `getFileInfo`                                                                                                         | Legge i metadati del file.                                                                 |
| `getTranslationStatus`                                                                                                | Legge lo stato di traduzione di un file.                                                   |
| `processFileMoves`                                                                                                    | Sposta o rinomina i file.                                                                  |
| `getOrphanedFiles`                                                                                                    | Trova i file orfani.                                                                       |
| [`listContextGroups`](/docs/platform/openapi/reference/context-management/list-groups)                                | Elenca i Context Group di un&#39;Organization.                                             |
| [`createContextGroup`](/docs/platform/openapi/reference/context-management/create-group)                              | Crea un Context Group.                                                                     |
| [`getContextGroup`](/docs/platform/openapi/reference/context-management/get-group)                                    | Legge un Context Group.                                                                    |
| [`updateContextGroup`](/docs/platform/openapi/reference/context-management/update-group)                              | Aggiorna un Context Group.                                                                 |
| [`deleteContextGroup`](/docs/platform/openapi/reference/context-management/delete-group)                              | Elimina un Context Group.                                                                  |
| [`listProjectContextGroups`](/docs/platform/openapi/reference/context-management/list-project-groups)                 | Elenca i Context Group assegnati a un progetto.                                            |
| [`getProjectContextGroup`](/docs/platform/openapi/reference/context-management/get-project-group)                     | Legge un singolo Context Group assegnato.                                                  |
| [`assignContextGroup`](/docs/platform/openapi/reference/context-management/assign-group)                              | Assegna un Context Group a un progetto.                                                    |
| [`unassignContextGroup`](/docs/platform/openapi/reference/context-management/unassign-group)                          | Rimuove l&#39;assegnazione di un Context Group da un progetto.                             |
| [`reorderContextGroup`](/docs/platform/openapi/reference/context-management/reorder-group)                            | Modifica la priorità di un Context Group assegnato.                                        |
| [`listContextGlossary`](/docs/platform/openapi/reference/context-management/list-glossary)                            | Elenca i termini del Glossario in un Context Group.                                        |
| [`upsertContextGlossary`](/docs/platform/openapi/reference/context-management/upsert-glossary)                        | Crea o aggiorna i termini del Glossario.                                                   |
| [`getContextGlossaryEntry`](/docs/platform/openapi/reference/context-management/get-glossary-entry)                   | Legge un singolo termine del Glossario.                                                    |
| [`updateContextGlossaryEntry`](/docs/platform/openapi/reference/context-management/update-glossary-entry)             | Aggiorna un singolo termine del Glossario.                                                 |
| [`deleteContextGlossaryEntry`](/docs/platform/openapi/reference/context-management/delete-glossary-entry)             | Elimina un singolo termine del Glossario.                                                  |
| [`listContextGlossaryTranslations`](/docs/platform/openapi/reference/context-management/list-glossary-translations)   | Elenca le traduzioni di un termine del Glossario.                                          |
| [`setContextGlossaryTranslation`](/docs/platform/openapi/reference/context-management/set-glossary-translation)       | Imposta la traduzione di un termine del Glossario.                                         |
| [`deleteContextGlossaryTranslation`](/docs/platform/openapi/reference/context-management/delete-glossary-translation) | Elimina la traduzione di un termine del Glossario.                                         |
| [`listContextCustomPrompts`](/docs/platform/openapi/reference/context-management/list-custom-prompts)                 | Elenca i prompt personalizzati in un Context Group.                                        |
| [`upsertContextCustomPrompts`](/docs/platform/openapi/reference/context-management/upsert-custom-prompts)             | Crea o aggiorna i prompt personalizzati.                                                   |
| [`updateContextCustomPrompt`](/docs/platform/openapi/reference/context-management/update-custom-prompt)               | Aggiorna un singolo prompt personalizzato.                                                 |
| [`deleteContextCustomPrompt`](/docs/platform/openapi/reference/context-management/delete-custom-prompt)               | Elimina un singolo prompt personalizzato.                                                  |
| [`importContextContent`](/docs/platform/openapi/reference/context-management/import-content)                          | Importa i termini del Glossario e i prompt personalizzati.                                 |
| [`exportContextContent`](/docs/platform/openapi/reference/context-management/export-content)                          | Esporta i termini del Glossario e i prompt personalizzati.                                 |

<Callout type="info">
  **Modificato nella v0.5.2:** il client generato ha aggiunto helper di Context Management per Context Groups, assegnazioni, termini del Glossario, prompt personalizzati, importazioni ed esportazioni.

  **Modificato nella v0.5.0:** le risposte di elenco restituiscono `items` invece di `projects` o `orgs`, in linea con l&#39;API attuale. Le chiamate `throwOnError` non riuscite sollevano [`ApiError`](#api-error) invece del body della risposta decodificato.

  **Modificato nella v0.3.0:** `encodeBase64`, `decodeBase64`, `encodeFileContent` e `decodeFileContent` non vengono più esportati. Codifica il contenuto del file prima di passarlo a un helper di caricamento generato.

  **Modificato nella v0.2.1:** [`createProject`](/docs/platform/openapi/reference/project/create-project) ora richiede `path.orgId` e chiama `POST /v2/orgs/{orgId}/projects`. Questa versione ha inoltre aggiunto [`createProjectApiKey`](/docs/platform/openapi/reference/project/create-api-key) e rimosso `shouldGenerateProjectContext` e `getProjectContextGenerationStatus`.
</Callout>

Usa `generateProjectContext` insieme a `getTranslationJobInfo` per i job di contesto. L&#39;helper [`downloadFile`](/docs/platform/openapi/reference/files/download) resta deprecato; usa `downloadFiles` per scaricare sia più file in batch sia singoli file.

Consulta il [riferimento OpenAPI pubblico](/docs/platform/openapi/overview) per le autorizzazioni aggiornate degli endpoint, i rate limit, gli schemi e i codici di stato.

### Individuazione e provisioning

Usa [`listOrgs`](/docs/platform/openapi/reference/project/list-orgs) per trovare l&#39;Organization associata alla tua chiave API. Funzionano sia le chiavi di Organization sia le chiavi di progetto: per questa ricerca non è necessaria alcuna autorizzazione alla creazione di progetti.

L&#39;individuazione dei progetti restituisce una sola pagina, determinata dall&#39;associazione della chiave API: una chiave di progetto restituisce il relativo progetto, mentre una chiave di Organization restituisce i progetti della relativa Organization. Non è richiesta alcuna autorizzazione sulle risorse. Usa [`paginate`](#pagination) per scorrere tutti i progetti:

```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 creazione di un progetto richiede una chiave di Organization con `org:projects:create` e accetta `path: { orgId }` e `body: { name, defaultLocale, cdnEnabled? }`.

Per [`createProjectApiKey`](/docs/platform/openapi/reference/project/create-api-key), specifica in modo esplicito le `permissions`, secondo il principio del privilegio minimo. Se le ometti, vengono richieste tutte le autorizzazioni di progetto delegabili in possesso del chiamante; devi possedere ciascuna delle autorizzazioni selezionate. Conserva il secret restituito in un luogo sicuro e non scriverlo mai nei log.

Questi helper generati per l&#39;individuazione e la creazione non sono metodi di [`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` restituisce uno per uno tutti gli elementi di un&#39;operazione di elenco come [`listProjects`](/docs/platform/openapi/reference/project/list-projects) o [`listOrgs`](/docs/platform/openapi/reference/project/list-orgs), passando `options` a ogni richiesta di pagina. La pagina successiva viene richiesta solo quando l&#39;iterazione la raggiunge, quindi uscendo dal ciclo non vengono effettuate altre richieste. Per riprendere, passa un `nextCursor` salvato come `query.cursor`. Se il recupero di una pagina non riesce, viene generata un&#39;eccezione, come in una chiamata con `throwOnError`.

Le pagine vengono lette in modo indipendente, quindi gli elementi che cambiano durante l&#39;iterazione potrebbero essere saltati o ripetuti.

## Polling dei job [#job-polling]

[`awaitJobs`](#job-polling) utilizza un client configurato per chiamare `getTranslationJobInfo` finché tutti i job richiesti non risultano completati, falliti, sconosciuti o mancanti, oppure finché non scade il timeout complessivo.

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

| Opzione                  | Descrizione                                                                                     | Tipo                                                | Facoltativo | Predefinito |
| ------------------------ | ----------------------------------------------------------------------------------------------- | --------------------------------------------------- | ----------- | ----------- |
| `pollingIntervalSeconds` | Intervallo tra le richieste di stato.                                                           | `number`                                            | Sì          | `5`         |
| `timeoutSeconds`         | Limite di tempo complessivo del polling.                                                        | `number`                                            | Sì          | `600`       |
| `onPoll`                 | Riceve ogni risposta di stato riuscita, non elaborata, prima della gestione degli stati finali. | `(statuses: GetTranslationJobInfoResponse) => void` | Sì          | —           |

```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` contiene `complete`, che è `false` solo quando il polling va in timeout, e `jobs`, che contiene il risultato più recente per ogni ID richiesto. A un job mancante viene assegnato lo status `unknown`. Passando un array vuoto, la promise si risolve immediatamente con `{ complete: true, jobs: [] }`.

Un errore dell&#39;API o dello status loader prima della scadenza complessiva provoca il rifiuto della promise di polling. Se la request fallisce dopo che la scadenza è trascorsa, il polling restituisce i risultati più recenti con `complete: false`.

`pollJobs` espone lo stesso ciclo di polling con uno status loader iniettato:

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

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

Usalo quando hai bisogno di una normalizzazione personalizzata delle richieste o degli errori. I poll vengono eseguiti in sequenza e richiedono solo gli ID in sospeso. Il loader riceve un segnale di interruzione limitato dalla scadenza complessiva rimanente e da un limite di 60 secondi per ogni polling. I risultati arrivati in ritardo vengono scartati; in caso di timeout vengono restituiti gli ultimi status accettati, che possono essere ancora in coda, in elaborazione o inizialmente sconosciuti. Un loader che ignora il segnale può ritardare la risoluzione.

`complete: true` significa che non ci sono job in sospeso, non che tutti i job siano riusciti. Controlla lo status di ciascun job prima di utilizzare i risultati. Entrambi gli helper di polling dell&#39;API accettano `onPoll`, a differenza delle opzioni del metodo di classe [`awaitJobs`](/docs/platform/core/reference/gt-class-methods/translation/await-jobs). Nessuna opzione di polling espone un segnale del chiamante e interrompere il polling locale non annulla i job remoti.

## Elaborazione in batch [#batch-processing]

`processBatches` suddivide un array di input in blocchi, richiama il processor per ogni blocco e appiattisce gli array restituiti nell&#39;ordine dei batch.

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

| Option      | Description                                                                  | Type      | facoltativo | Default              |
| ----------- | ---------------------------------------------------------------------------- | --------- | ----------- | -------------------- |
| `batchSize` | Numero di valori di input in ogni batch. Fornire un valore maggiore di zero. | `number`  | Sì          | `DEFAULT_BATCH_SIZE` |
| `parallel`  | Elabora tutti i batch in parallelo anziché in sequenza.                      | `boolean` | Sì          | `true`               |

`DEFAULT_BATCH_SIZE` è `100`.

Se un processore di batch va in reject, anche `processBatches` va in reject. Con l&#39;elaborazione parallela, gli altri batch già avviati proseguono in modo indipendente.

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

// Gli helper degli endpoint generati si aspettano il contenuto del file codificato per il trasporto.
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;
});
```

## Tipi ed errori [#types-errors]

Il modulo esporta `Client`, `Options`, `ApiClientConfig`, `ApiVersion`, `RetryPolicy`, `AwaitJobsOptions`, `AwaitJobsResult`, `GetJobStatuses`, `JobResult`, `BatchOptions`, `RuntimeFileFormat` e i tipi OpenAPI generati per le operazioni pubbliche elencate sopra.

Per ogni operazione pubblica elencata sopra, il package esporta:

* `<Operation>Data` per l&#39;input tipizzato di body, header, percorso e query.
* `<Operation>Errors` per la mappa per codice di stato degli errori documentati.
* `<Operation>Error` per l&#39;unione degli errori documentati.
* `<Operation>Responses` per la mappa per codice di stato delle risposte di successo documentate.
* `<Operation>Response` per l&#39;unione delle risposte di successo documentate.

Con il valore predefinito `throwOnError: false`, un&#39;operazione generata restituisce `data` oppure `error`, insieme alla `request` della Fetch API. Una risposta HTTP include `response`; se l&#39;operazione fallisce prima di ricevere una risposta, tale valore resta undefined. Con `throwOnError: true`, una risposta HTTP di errore ricevuta da un client `createApiClient` lancia un [`ApiError`](#api-error). In caso di errori di rete o di annullamento viene lanciato l&#39;errore originale; il timeout integrato lancia `Error('Request timed out after <timeoutMs>ms')`.

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

Con un client `createApiClient`, le risposte HTTP non riuscite delle chiamate con `throwOnError`, di [`paginate`](#pagination), di [`awaitJobs`](#job-polling) e dei metodi della classe [`GT`](/docs/platform/core/reference/gt-class/constructor) lanciano un `ApiError`, con `name: 'ApiError'`, lo stato HTTP come `code` numerico e `message`. Importalo da `generaltranslation/api` o da `generaltranslation/errors`. Le chiamate senza `throwOnError` continuano a restituire il body decodificato della risposta in `error`. Gli errori di rete, di configurazione, di annullamento e di timeout possono causare il rifiuto dell&#39;intera chiamata al metodo della classe e non corrispondono necessariamente a errori di traduzione dei singoli elementi.

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

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

## Specifica OpenAPI [#openapi-spec]

Usa [`/openapi.json`](/openapi.json) per il contratto aggiornato dell&#39;API pubblica ospitata. Il [riferimento OpenAPI](/docs/platform/openapi/overview) documenta le autorizzazioni degli endpoint, gli schemi delle richieste e le risposte.

## Sitemap

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