1. API
  2. Fundamentos
  3. Erros
Ir para Dashboard
  • Visão geral da API
  • Erros
  • Limites
  • Paginação
  • GETListar campanhas
  • POSTCriar campanha
  • GETObter campanha
  • DELETEExcluir campanha
  • PATCHAtualizar campanha
  • POSTCancelar campanha
  • POSTCriar segmento
  • GETRelatório diário
  • GETListar assinantes
  • GETObter assinante
  • DELETEExcluir assinante
  • PATCHAtualizar assinante
  • GETObter configuração do site
  • POSTRegistrar inscrição
  • DELETECancelar inscrição do dispositivo
  • POSTRegistrar evento
  • GETObter preferências
  • PUTAtualizar preferências

Erros

Códigos HTTP usados pela API e o formato do corpo em cada caso.

Loading documentation…

Visão geral da API< PreviousLimitesNext >

Powered by heyo

On this page

CódigosFormato do corpoValidaçãoInscriçãoO que fazer em cada casoIdempotência

A API usa os códigos HTTP de sempre. Trate os erros pelo código; a mensagem serve para ler nos logs e pode mudar de texto.

Códigos

CódigoQuando
200Leitura ou atualização concluída
201Campanha ou segmento criado
202Inscrição aceita; o processamento acontece logo depois, numa fila
204Concluído, sem corpo (evento registrado, assinante excluído)
401Chave ausente, inválida, revogada ou de um tipo que não existe mais (pub_live_)
402Limite de assinantes do plano atingido
403Origin não permitido numa rota do SDK (Origem não permitida.)
404Site, dispositivo ou assinante não encontrado
405Método HTTP que a rota não aceita
409A campanha não pode ser alterada no status atual (o envio já começou ou terminou)
421A requisição chegou num host que não é api.pushwi.com
422Dados inválidos
429Limite de requisições excedido. Veja limites.
5xxErro do lado do Pushwi. Tente de novo com espera crescente.

Formato do corpo

Todo erro devolve um objeto com message, em português:

json
{ "message": "Recurso não encontrado." }

Quando a causa não tem uma mensagem própria, a API usa a mensagem padrão do código:

CódigoMensagem padrão
401Credencial ausente ou inválida.
402Limite do plano atingido.
403Acesso negado.
404Recurso não encontrado.
405Método não permitido.
409Conflito com o estado atual do recurso.
429Muitas requisições. Tente novamente em instantes.

Validação

Erros de validação (422) trazem a lista de problemas por campo. A chave é o caminho do campo, com pontos para objetos e números para posições em listas:

json
{  "message": "O campo content.title é obrigatório. (e mais 1 erro)",  "errors": {    "content.title": ["O campo content.title é obrigatório."],    "variants": ["O campo variants deve ter pelo menos 2 itens."]  }}

Em segmentos, o caminho aponta a regra exata: definition.groups.0.rules.1.op.

Inscrição

A rota de inscrição usa o mesmo formato. Os erros de regra de negócio dela são estes:

CódigoMensagem
402Limite de assinantes do plano atingido.
422O external_id não tem uma assinatura válida do publisher.

O 402 só vale para dispositivos novos. A reinscrição de um navegador que já é assinante continua sendo aceita com a conta no limite, e tags, atributos e login seguem atualizando.

202 não garante a inscrição

A inscrição é processada depois da resposta. Se nesse meio-tempo a organização atingir o limite do plano, a inscrição de um dispositivo novo é descartada sem aviso ao navegador. Acompanhe o uso do plano pelo painel ou pelo webhook subscriber.created.

O que fazer em cada caso

CódigoAção recomendada
401, 403Não repita. Confira a chave, ou as origens permitidas.
402Não repita. É preciso mudar de plano ou liberar espaço.
404Não repita. O recurso não existe neste site.
409Não repita. Leia a campanha de novo para ver o status atual.
422Corrija os campos indicados em errors antes de reenviar.
429Espere os segundos de Retry-After e tente de novo.
5xxRepita com espera crescente: 1 s, 2 s, 4 s…

Para repetir POST /v1/campaigns depois de um erro de rede sem risco de criar a campanha duas vezes, mande o cabeçalho Idempotency-Key. Veja evitando campanha duplicada.

Idempotência

CódigoMensagem
422Esta Idempotency-Key já foi usada com outro corpo de requisição.
422O cabeçalho Idempotency-Key precisa ter de 1 a 255 caracteres.