# Gestione degli errori

> **Traduzione italiana non ufficiale.** Originale: [Processing of Errors](https://affiliate-program.amazon.com/creatorsapi/docs/en-us/troubleshooting/processing-of-errors) · [sorgente EN](../../en/troubleshooting/processing-of-errors.md) · [indice](../../README.md)

### È possibile inviare una richiesta valida e avere comunque un errore?

Sì. Se inviassi una richiesta e nessun articolo su Amazon la soddisfacesse, riceveresti un errore. La richiesta seguente è un esempio di questo problema.

* Di seguito una richiesta [SearchItems](../api-reference/operations/search-items.md) che prova a cercare *Mystery Novels Non Existing* su Amazon nella categoria `Automotive` con condizione `New`.

```json
{
 "keywords": "Mystery Novels Non Existing",
 "searchIndex": "Automotive",
 "condition": "New",
 "partnerTag": "xyz-20"
}
```

* Poiché cercare romanzi gialli inesistenti nella categoria Automotive non restituisce risultati, non abbiamo ottenuto risultati per la richiesta. La risposta della Creators API in questo caso è la seguente:

```json
{
 "__type": "com.amazon.creators#ResourceNotFoundException",
 "message": "No results found for your search request",
 "resourceType": "SearchResult",
 "resourceId": "Mystery Novels Non Existing"
}
```

---

### È possibile non ottenere la risposta di una risorsa anche dopo averla richiesta?

Sì. Le [Risorse](../api-reference/resources.md) determinano quali informazioni verranno restituite nella risposta dell'API. È possibile che una risorsa richiesta non sia disponibile per un particolare prodotto. In questo caso la Creators API restituisce una risposta parziale in cui la risorsa non fornibile è assente, mentre le altre risorse valide vengono restituite. Per esempio, la risorsa ContentRating di [ItemInfo](../api-reference/resources/item-info.md) è di solito applicabile a prodotti digitali come film o videogiochi. Richiedere ContentRating per un prodotto di elettronica non restituirà l'informazione ContentRating.

* Di seguito una richiesta [GetItems](../api-reference/operations/get-items.md) per un Fire TV Stick che richiede le risorse `itemInfo.contentRating` e `itemInfo.title`.

```json
{
 "itemIds": ["B00ZV9RDKK"],
 "itemIdType": "ASIN",
 "resources": ["itemInfo.contentRating", "itemInfo.title"],
 "partnerTag": "xyz-20",
 "marketplace": "www.amazon.com",
 "operation": "GetItems"
}
```

* Poiché non c'è informazione `ContentRating` per l'articolo, la risposta contiene solo l'informazione `Title`, che è l'altra risorsa richiesta.

```json
{
 "items": [
  {
   "asin": "B00ZV9RDKK",
   "detailPageURL": "https://www.amazon.com/dp/B00ZV9RDKK?tag=dsf&linkCode=ogi&th=1&psc=1",
   "itemInfo": {
    "title": {
     "displayValue": "Fire TV Stick with Alexa Voice Remote | Streaming Media Player",
     "label": "Title",
     "locale": "en_US"
    }
   }
  }
 ]
}
```

---

### La Creators API restituisce risposte parziali?

Sì. Per esempio, se provi a ottenere le informazioni di più ASIN dove alcuni non sono validi, otterrai i risultati per gli ASIN validi insieme a informazioni di errore dettagliate per gli ASIN non validi nell'array `errors`. Per esempio:

* Di seguito una richiesta [GetItems](../api-reference/operations/get-items.md) in cui alcuni ASIN non sono validi.

```json
{
 "itemIds": ["B08N5WRWNW", "B0BL8WSCH3"],
 "partnerTag": "xyz-20",
 "marketplace": "www.amazon.com",
 "operation": "GetItems"
}
```

* La risposta contiene l'ASIN valido in `itemsResult` e informazioni di errore dettagliate per l'ASIN non valido nell'array `errors`:

```json
{
 "errors": [
  {
   "code": "InvalidParameterValue",
   "message": "The ItemIds B08N5WRWNW provided in the request is invalid."
  }
 ],
 "itemsResult": {
  "items": [
   {
    "asin": "B0BL8WSCH3",
    "detailPageURL": "https://www.amazon.com/dp/B0BL8WSCH3?tag=xyz-20&linkCode=ogi&th=1&psc=1",
    "itemInfo": {
     "title": {
      "displayValue": "Amazon Fire 7 Kids tablet (newest model) ages 3-7",
      "label": "Title",
      "locale": "en_US"
     }
    }
   }
  ]
 }
}
```

### Comprendere l'array `errors`

L'array `errors` fornisce informazioni dettagliate sui fallimenti parziali:

* **Quando compare**: solo nelle risposte HTTP 200 quando alcuni articoli hanno successo e altri falliscono
* **Cosa contiene**: ogni errore ha:
  - `code`: un identificatore univoco del tipo di errore (es. `InvalidParameterValue`, `ItemNotFound`)
  - `message`: una descrizione leggibile di cosa è andato storto
* **Comportamento**:
  - Se **alcuni** articoli sono validi: restituisce HTTP 200 con gli articoli validi + array `errors` per quelli non validi
  - Se **tutti** gli articoli sono non validi: restituisce HTTP 404 `ResourceNotFoundException` (nessuna risposta parziale)
  - Se **tutti** gli articoli sono validi: restituisce HTTP 200 con solo `itemsResult` (nessun array `errors`)

Questo pattern si applica a tutte le operazioni di catalogo che accettano più identificatori:
- `GetItems` — più item ID
- `SearchItems` — query di ricerca (possono avere errori di refinement)
- `GetVariations` — richieste di varianti
- `GetBrowseNodes` — più browse node ID

### Best practice per la gestione degli errori

Quando elabori le risposte:
1. **Controlla sempre l'array `errors`** per identificare quali articoli sono falliti e perché
2. **Elabora gli articoli riusciti** dall'oggetto risultato
3. **Registra o riprova gli articoli falliti** in base ai codici di errore
4. **Non dare per scontato che tutti gli articoli richiesti siano presenti** nella risposta
