> ## Documentation Index
> Fetch the complete documentation index at: https://www.octoparse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Scarica cartella contratto

> Scarica il contratto author dell’ultimo release come zip di file slot.

**`GET`** `https://api-datahub.octoparse.com/v1/data-apps/{app_id}/contract.zip`

Autenticazione: API key obbligatoria (`Authorization: Bearer <API Key>`). Solo autore dell’app; gli altri ricevono `404`.

Contratto lato autore dell'ultima release, suddiviso nella struttura canonica della cartella del contratto e compresso in zip sul server. Stessa fonte di dati di Ottieni manifest (riferimenti ai file già incorporati). Lo zip contiene un'unica directory di primo livello `<app_name>/`; `Content-Disposition` assegna al file il nome `<app_name>.zip`.

Zero release restituiscono `404 release-not-found`: semantica “latest release”, mai fallback sulla bozza. Lo stato companion dell’editor non-slot è omesso, quindi download → edit → import è un round-trip lossless per app api-kind. Se l’app ha traduzioni, lo zip include anche `i18n.json` (traduzioni correnti, non quelle al publish).

## Richiesta

### Parametri di percorso

<ParamField path="app_id" type="string" required>
  Riferimento app.
</ParamField>

### Esempio di richiesta

```bash theme={null}
curl \
  -H "Authorization: Bearer $OCTOPARSE_API_KEY" \
  "https://api-datahub.octoparse.com/v1/data-apps/carol/reviews-query/contract.zip"
```

## Risposta

### 200 successo

Il body della response è binary `application/zip`.

### Errori

| HTTP | `code`              | `category`  | Descrizione                                                     |
| ---- | ------------------- | ----------- | --------------------------------------------------------------- |
| 401  | `unauthorized`      | `forbidden` | API key mancante o non valida.                                  |
| 404  | `release-not-found` | `not_found` | Quella versione non esiste, oppure l’app non ha ancora release. |

Le risposte di errore usano `{"error": {code, category, message, retryable}}`. Vedi <a href="/docs/it/datahub/api/reference/introduction#errors">Errori</a>.

## Librerie client

Gli SDK Python e JavaScript non wrappano ancora questo endpoint. Chiama REST direttamente.
