Skip to main content
Aprenda estas três formas uma vez e você já sabe ler qualquer uma das 142 operações da API do vendedor. Elas não mudam de recurso para recurso.

O envelope de resposta

Toda resposta bem-sucedida tem success: true e os dados em data. O que muda é se data é um objeto ou uma lista.
Nunca leia a raiz da resposta como se fosse o recurso. data é sempre o lugar certo, mesmo quando a lista tem um item só.

Paginação

Toda rota cujo nome começa com “Listar” aceita dois parâmetros de query:
O bloco pagination diz onde você está:
  • total é a contagem de itens que passam pelos filtros, não o tamanho da página.
  • totalPages é ceil(total / pageSize).
  • Você chegou ao fim quando page === totalPages, ou quando data vem vazio.
Para varrer uma coleção inteira, use pageSize=100 e pare quando page alcançar totalPages. Pedir pageSize=500 devolve 422 com "pageSize: pageSize deve ser no máximo 100" — o teto é validado no schema.
As rotas transacionais legadas não usam este envelope, e nem entre si concordam:
  • GET /v1/transactions responde "totalRows": 2, sem bloco pagination.
  • GET /v1/subscriptions responde "pagination": { "page": 1, "limit": 20, "total": 0, "totalPages": 0 } — repare em limit, não pageSize — mais um bloco stats com métricas agregadas.
  • GET /v1/webhook responde "pagination": { "offset": 0, "pageSize": 20, "totalCount": 3, "currentPage": 1, "totalPages": 1, "hasNext": false, "hasPrevious": false }.
São rotas anteriores a esta convenção e o contrato delas está congelado: terceiros já integrados quebrariam. Veja a API transacional.

Filtros

Além de page e pageSize, cada recurso aceita os filtros que fazem sentido para ele. Todos são opcionais e combináveis — o efeito é E, não OU. Datas vão em ISO 8601 com fuso, e o intervalo é fechado nas duas pontas:
Cada página de referência lista os filtros da sua rota com o enum completo de valores aceitos. Um valor fora do enum não é ignorado: responde 422.

Erros

Um erro tem sempre a mesma forma — success: false e uma message em português, pronta para log:
O status HTTP é que carrega o significado.

422 nomeia o campo

A validação é por schema, então a message diz exatamente qual campo reprovou e por quê:
O caminho usa ponto para campos aninhados. Corrigir é mecânico: o campo citado está faltando, com o tipo errado, ou fora do enum. Um enum errado devolve a lista inteira de valores aceitos:

400 é regra de negócio, não schema

O corpo passou pela validação, mas a operação não faz sentido para o estado atual do recurso:
Não repita a chamada: o resultado será o mesmo até o estado mudar.

404 também significa “de outra empresa”

A API não distingue “não existe” de “existe mas é de outra empresa” — as duas situações respondem 404. É de propósito: a diferença contaria a um estranho que aquele id existe.
As rotas transacionais legadas respondem 400 (não 422) quando o corpo não bate com o schema, e acrescentam um array details com os erros campo a campo. É a única diferença de contrato de erro entre as duas superfícies.

Um cliente que aguenta o dia a dia

Três hábitos cobrem quase tudo: reautenticar em 401, ler message em 4xx e repetir com recuo apenas em 429 e 5xx.