SelectwinDOCS
Entregas

Listar entregas

Liste o histórico de tentativas de entrega (dispatches) dos seus webhooks: cada item registra um evento enviado a um endpoint, o resultado da tentativa e o diagnóstico HTTP do seu servidor. É a ferram

Liste o histórico de tentativas de entrega (dispatches) dos seus webhooks: cada item registra um evento enviado a um endpoint, o resultado da tentativa e o diagnóstico HTTP do seu servidor. É a ferramenta principal para auditar entregas e investigar por que um webhook não chegou.

GET /v1/webhooks/dispatches

Como funciona

Um webhook é uma notificação HTTP que a Selectwin envia ao seu servidor quando algo acontece na sua conta (ex.: uma transação foi aprovada). Cada vez que a plataforma tenta entregar um evento a um dos seus endpoints, ela cria um dispatch (wdi_...) — o "recibo" daquela tentativa de entrega.

Este endpoint retorna esses recibos em ordem cronológica, permitindo que você responda perguntas como: o evento da transação X foi entregue? Quantas vezes tentamos? Qual código HTTP o meu servidor devolveu? Em quais endpoints estão concentradas as falhas?

Um dispatch passa por estes estados (status):

  • pending — entrega criada, ainda não confirmada.
  • retrying — uma tentativa falhou; a plataforma reagenda novas tentativas com backoff (espera crescente entre uma tentativa e outra).
  • success — seu servidor respondeu com um código 2xx. O campo successAt é preenchido.
  • failed — todas as tentativas se esgotaram sem sucesso.

O campo attempts conta quantas vezes a entrega foi tentada, e responseStatusCode/responseBody guardam o que o seu servidor devolveu na última tentativa (úteis para descobrir se o problema é um 500 seu, um 404 de rota errada ou um timeout).

Projeção de lista

Como em toda listagem da API, os itens de data[] são projeções leves do objeto. Os campos de diagnóstico aqui já são suficientes para auditar; veja Convenções sobre null vs. campo ausente.

Quando usar (e quando não usar)

Use esta listagem para:

  • Auditar todas as entregas de um período ou de um endpoint específico.
  • Diagnosticar falhas em lote (ex.: todas as entregas de um endpoint começaram a falhar com 502).
  • Montar um painel operacional simples de saúde dos webhooks.

Quando não usar:

  • Para métricas agregadas (taxas de sucesso/falha consolidadas) prefira Analytics, que já entrega os números resumidos.
  • Para reenviar uma entrega que falhou, use Redispatch — esta página apenas lê.
  • Não use esta listagem como mecanismo de polling para saber o estado dos seus pagamentos. O estado de transações/assinaturas deve ser consumido pelos próprios webhooks; veja Proibição de Polling.

Requisição

Headers

CabeçalhoObrigatórioValor
SelectKeySimSua chave de API (sl_live_... em produção, sl_test_... em sandbox). Veja Autenticação.

Esta é uma operação somente leitura (GET) e não envia corpo — não há Content-Type nem X-Idempotency-Key a definir.

Parâmetros de consulta (query)

Todos são opcionais. Filtros podem ser combinados (são aplicados em conjunto, com lógica E).

ParâmetroTipoFaixa / EnumDescrição
limitinteger1100Máximo de registros por página.
offsetinteger≥ 0Quantos registros pular (paginação).
sortstringascending | descendingDireção da ordenação por data de criação (padrão prático: descending, mais recentes primeiro).
statusstringpending | retrying | success | failedFiltra pelo resultado da entrega.
endpointstringFiltra por trecho (substring) da URL do endpoint de destino.
responsestatusintegerFiltra pelo código HTTP devolvido pelo seu servidor (ex.: 200, 500).
onlyerroredbooleanSe true, retorna apenas entregas que falharam.
daterangestring (date-time)Filtra por um único dia: a API expande o valor para o início e o fim daquele dia.
daterangegtstring (date-time)Criado após (exclusivo).
daterangegtestring (date-time)Criado a partir de (inclusivo).
daterangeltstring (date-time)Criado antes de (exclusivo).
daterangeltestring (date-time)Criado até (inclusivo).

Sobre os filtros de data

As datas seguem o padrão ISO 8601 em UTC (2026-04-01T00:00:00Z). Use o par daterangegte + daterangelte para delimitar um intervalo fechado; use daterange quando quiser apenas um dia inteiro. Veja Convenções.

Para o funcionamento geral de limit/offset, hasMore e page, veja Paginação.

Exemplos curl

Consulta básica (entregas mais recentes):

curl https://api.selectwin.io/v1/webhooks/dispatches \
  -H "SelectKey: sl_live_aBcDeFgHiJkLmNoPqRsTuVwXyZ"

Apenas entregas que falharam:

curl "https://api.selectwin.io/v1/webhooks/dispatches?onlyerrored=true" \
  -H "SelectKey: sl_live_aBcDeFgHiJkLmNoPqRsTuVwXyZ"

Falhas de um endpoint específico:

curl -G https://api.selectwin.io/v1/webhooks/dispatches \
  -H "SelectKey: sl_live_aBcDeFgHiJkLmNoPqRsTuVwXyZ" \
  --data-urlencode "status=failed" \
  --data-urlencode "endpoint=webhooks.mydomain.com"

Intervalo de datas (abril de 2026), 20 por página:

curl -G https://api.selectwin.io/v1/webhooks/dispatches \
  -H "SelectKey: sl_live_aBcDeFgHiJkLmNoPqRsTuVwXyZ" \
  --data-urlencode "daterangegte=2026-04-01T00:00:00Z" \
  --data-urlencode "daterangelte=2026-04-30T23:59:59Z" \
  --data-urlencode "limit=20"

Use -G com --data-urlencode para que o curl codifique corretamente os valores (ex.: o : e a / da URL do endpoint, ou o +/Z das datas).

Resposta

Sucesso (200 OK)

A resposta é o envelope paginado padrão: dados de paginação no topo, a lista em data[], o merchant da conta e os links HATEOAS em _links.

{
  "offset": 0,
  "limit": 20,
  "total": 50,
  "hasMore": true,
  "page": {
    "current": 1,
    "total": 3,
    "offset": { "first": 0, "prev": null, "next": 20, "last": 40 }
  },
  "data": [
    {
      "id": "wdi_01hqzvabc",
      "endpoint": "https://webhooks.mydomain.com/selectwin",
      "status": "success",
      "event": "transaction.approved",
      "attempts": 1,
      "lastAttemptAt": "2026-04-12T17:56:33.000Z",
      "responseStatusCode": 200,
      "responseBody": "OK",
      "successAt": "2026-04-12T17:56:33.050Z",
      "updatedAt": "2026-04-12T17:56:33.000Z",
      "createdAt": "2026-04-12T17:56:33.000Z"
    }
  ],
  "merchant": {
    "name": "Seller Name",
    "merchantId": "bus_1234567890",
    "isSubAccount": false
  },
  "_links": {
    "self": {
      "href": "https://api.selectwin.io/v1/webhooks/dispatches",
      "method": "GET"
    }
  }
}

Campos do envelope

CampoTipoDescrição
offsetintegerDeslocamento aplicado nesta página.
limitintegerTamanho de página efetivo.
totalintegerTotal de dispatches que casam com os filtros.
hasMorebooleantrue se há mais páginas além desta.
pageobjectAtalhos de navegação (current, total de páginas e os offset de primeira/anterior/próxima/última).
dataarrayLista de dispatches (campos abaixo).
merchantobjectDados do merchant da conta (name, merchantId, isSubAccount).
_linksobjectLinks HATEOAS — aqui, self.

Campos de cada dispatch (data[])

CampoTipoDescrição
idstringIdentificador do dispatch (wdi_...). Use-o em Redispatch.
endpointstringURL do endpoint de destino que recebeu (ou deveria receber) o evento.
statusstringResultado: pending, retrying, success ou failed.
eventstringTipo do evento entregue (ex.: transaction.approved).
attemptsintegerNúmero de tentativas de entrega realizadas.
lastAttemptAtstring (date-time)Data/hora da última tentativa (ISO 8601 UTC).
responseStatusCodeinteger | nullCódigo HTTP que o seu servidor devolveu (ex.: 200, 500). null se ainda não houve resposta.
responseBodystring | nullCorpo devolvido pelo seu servidor (truncado). null se ausente.
successAtstring (date-time) | nullQuando a entrega foi confirmada com sucesso; null enquanto não houver sucesso.
updatedAtstring (date-time)Última atualização do registro.
createdAtstring (date-time)Quando o dispatch foi criado (momento do evento).

Dica

Trate o id como opaco — armazene a string inteira do wdi_... sem fazer parsing do prefixo. Veja Convenções.

Erros

Os erros seguem o envelope padrão com um error.code estável — trate sempre pelo code, não pela message. Veja Tratamento de Erros e o Catálogo de Códigos.

error.codeHTTPQuando ocorre
invalidParameters400Parâmetro de filtro inválido (ex.: status fora do enum, data malformada). Veja error.params.
webhookDispatchIdInvalid400ID de dispatch inválido (relevante ao referenciar um dispatch, ex.: em Redispatch).
unauthorized401SelectKey ausente, inválida ou revogada.
forbidden403Autenticado, mas sem permissão para listar dispatches.
unprocessableEntity422Combinação de parâmetros não processável (regra de negócio).
tooManyRequests429Limite de requisições excedido — respeite error.retryAfterMinutes e use backoff. Veja API Limits.
serverError500Erro interno — repita com backoff; se persistir, contate o suporte.

Boas práticas

  • Filtre no servidor, não no cliente. Combine status=failed (ou onlyerrored=true) com endpoint= para isolar exatamente as entregas problemáticas, em vez de baixar tudo e filtrar localmente.
  • Pagine sempre. Use limit (até 100) com offset, e siga hasMore/page até esgotar; nunca assuma que a primeira página tem todos os resultados.
  • Delimite por data em auditorias com daterangegte + daterangelte (ISO 8601 UTC) para janelas previsíveis e respostas menores.
  • Diagnostique pelo trio attempts + responseStatusCode + responseBody. 5xx indica erro no seu servidor; 404 sugere rota errada; ausência de responseStatusCode aponta timeout de rede.
  • Para reenviar, vá ao Redispatch. Identificou um wdi_... com status: failed que deveria ter chegado? Reenvie por Redispatch em vez de esperar novas tentativas automáticas.
  • Não faça polling de pagamentos por aqui. Esta listagem audita entregas, não substitui o consumo dos eventos; veja Proibição de Polling.

Veja também

How is this guide?

On this page