> For the complete documentation index, see [llms.txt](https://help.citrusad.com/retail-media-interface/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.citrusad.com/retail-media-interface/partner/pt-br/partner-api-overview/error-handling.md).

# Tratamento de erros

Epsilon Retail Media As APIs de parceiros seguem uma abordagem estruturada e consistente para o tratamento de erros. Isso garante que as respostas de erro sejam previsíveis, fáceis de analisar e úteis para depuração.

## Estrutura da resposta de erro

Quando ocorre um erro, a API retorna:

* Um código de status HTTP padrão.
* Um corpo JSON estruturado com os campos code, message e details opcionais.
* Uma lista de violações em nível de campo (se aplicável), permitindo que os clientes corrigam vários problemas de uma só vez.

## Estratégias básicas para tratamento de erros

Quando você encontrar um erro, siga estas etapas:

1. **Leia a mensagem de erro com atenção** - A resposta de erro fornece informações específicas sobre o que deu errado e qual campo causou o problema.
2. **Revise a página do endpoint** - Se você não tiver certeza de como proceder, revise a página específica do endpoint que está usando.
3. **Entre em contato com o suporte** - Se continuar a ter problemas, você poderá abrir um chamado em nosso Portal de Suporte. Forneça:
   * A chamada de API exata que você está fazendo.
   * O varejista e a equipe específicos.
   * A entidade específica que você está criando/atualizando.
   * A resposta de erro completa que você está vendo.

Essas informações garantirão que nossa equipe possa ajudá-lo de maneira eficiente e eficaz.

### Exemplo de violação única

```json
{
  "code": 3,
  "message": "Invalid argument(s) for product campaign creation",
  "details": [
    {
      "@type": "type.googleapis.com/google.rpc.BadRequest",
      "fieldViolations": [
        {
          "field": "maxBid",
          "description": "[maxBid] must be greater or equal [minBid]"
        }
      ]
    }
  ]
}
```

### Exemplo de múltiplas violações

```json
{
  "code": 3,
  "message": "Invalid argument(s) for product campaign update",
  "details": [
    {
      "@type": "type.googleapis.com/google.rpc.BadRequest",
      "fieldViolations": [
        {
          "field": "strategy.fixedTenancy.catalogCosts",
          "description": "all catalog cost percentages for fixed tenancy must sum to 100%"
        },
        {
          "field": "strategy.fixedTenancy.catalogCosts",
          "description": "fixed tenancy catalog cost [...] is duplicated in the list"
        }
      ]
    }
  ]
}
```

## Códigos de status HTTP padrão

| Código de status HTTP     | Significado                      | Quando ocorre                                   |
| ------------------------- | -------------------------------- | ----------------------------------------------- |
| 200 OK                    | A requisição foi bem-sucedida    | Chamada de API bem-sucedida                     |
| 204 No Content            | Sucesso, sem corpo de resposta   | Requisição bem-sucedida sem payload de retorno  |
| 400 Bad Request           | Entrada inválida                 | Requisição malformada ou falha de validação     |
| 401 Unauthorized          | Token ausente ou inválido        | Token não fornecido ou expirado                 |
| 403 Forbidden             | Acesso negado                    | Token válido, mas sem permissão                 |
| 404 Not Found             | Recurso não encontrado           | Endpoint ou ID de recurso inválido              |
| 409 Conflict              | Dados duplicados ou conflitantes | O recurso já existe ou viola restrições         |
| 429 Too Many Requests     | Limite de taxa excedido          | Muitas requisições em um curto período de tempo |
| 500 Internal Server Error | Problema no lado do servidor     | Erro inesperado no servidor                     |
| 503 Service Unavailable   | Indisponibilidade temporária     | O serviço está fora do ar ou em manutenção      |

## Mapeamento de códigos de erro gRPC para HTTP

| Código gRPC | Nome gRPC            | Código HTTP | Nome HTTP                        |
| ----------- | -------------------- | ----------- | -------------------------------- |
| 0           | OK                   | 200         | OK                               |
| 1           | CANCELLED            | 499         | Client Closed Request            |
| 2           | UNKNOWN              | 500         | Internal Server Error            |
| 3           | INVALID\_ARGUMENT    | 400         | Bad Request                      |
| 4           | DEADLINE\_EXCEEDED   | 504         | Tempo limite do gateway excedido |
| 5           | NOT\_FOUND           | 404         | Não encontrado                   |
| 6           | ALREADY\_EXISTS      | 409         | Conflito                         |
| 7           | PERMISSION\_DENIED   | 403         | Proibido                         |
| 8           | RESOURCE\_EXHAUSTED  | 429         | Muitas solicitações              |
| 9           | FAILED\_PRECONDITION | 400         | Bad Request                      |
| 10          | ABORTED              | 409         | Conflito                         |
| 11          | OUT\_OF\_RANGE       | 400         | Bad Request                      |
| 12          | UNIMPLEMENTED        | 501         | Não implementado                 |
| 13          | INTERNAL             | 500         | Internal Server Error            |
| 14          | UNAVAILABLE          | 503         | Serviço indisponível             |
| 15          | DATA\_LOSS           | 500         | Internal Server Error            |
| 16          | UNAUTHENTICATED      | 401         | Não autorizado                   |


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://help.citrusad.com/retail-media-interface/partner/pt-br/partner-api-overview/error-handling.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
