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ódigo2xx. O camposuccessAté 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çalho | Obrigatório | Valor |
|---|---|---|
SelectKey | Sim | Sua 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âmetro | Tipo | Faixa / Enum | Descrição |
|---|---|---|---|
limit | integer | 1–100 | Máximo de registros por página. |
offset | integer | ≥ 0 | Quantos registros pular (paginação). |
sort | string | ascending | descending | Direção da ordenação por data de criação (padrão prático: descending, mais recentes primeiro). |
status | string | pending | retrying | success | failed | Filtra pelo resultado da entrega. |
endpoint | string | — | Filtra por trecho (substring) da URL do endpoint de destino. |
responsestatus | integer | — | Filtra pelo código HTTP devolvido pelo seu servidor (ex.: 200, 500). |
onlyerrored | boolean | — | Se true, retorna apenas entregas que falharam. |
daterange | string (date-time) | — | Filtra por um único dia: a API expande o valor para o início e o fim daquele dia. |
daterangegt | string (date-time) | — | Criado após (exclusivo). |
daterangegte | string (date-time) | — | Criado a partir de (inclusivo). |
daterangelt | string (date-time) | — | Criado antes de (exclusivo). |
daterangelte | string (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
-Gcom--data-urlencodepara que ocurlcodifique corretamente os valores (ex.: o:e a/da URL do endpoint, ou o+/Zdas 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
| Campo | Tipo | Descrição |
|---|---|---|
offset | integer | Deslocamento aplicado nesta página. |
limit | integer | Tamanho de página efetivo. |
total | integer | Total de dispatches que casam com os filtros. |
hasMore | boolean | true se há mais páginas além desta. |
page | object | Atalhos de navegação (current, total de páginas e os offset de primeira/anterior/próxima/última). |
data | array | Lista de dispatches (campos abaixo). |
merchant | object | Dados do merchant da conta (name, merchantId, isSubAccount). |
_links | object | Links HATEOAS — aqui, self. |
Campos de cada dispatch (data[])
| Campo | Tipo | Descrição |
|---|---|---|
id | string | Identificador do dispatch (wdi_...). Use-o em Redispatch. |
endpoint | string | URL do endpoint de destino que recebeu (ou deveria receber) o evento. |
status | string | Resultado: pending, retrying, success ou failed. |
event | string | Tipo do evento entregue (ex.: transaction.approved). |
attempts | integer | Número de tentativas de entrega realizadas. |
lastAttemptAt | string (date-time) | Data/hora da última tentativa (ISO 8601 UTC). |
responseStatusCode | integer | null | Código HTTP que o seu servidor devolveu (ex.: 200, 500). null se ainda não houve resposta. |
responseBody | string | null | Corpo devolvido pelo seu servidor (truncado). null se ausente. |
successAt | string (date-time) | null | Quando a entrega foi confirmada com sucesso; null enquanto não houver sucesso. |
updatedAt | string (date-time) | Última atualização do registro. |
createdAt | string (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.code | HTTP | Quando ocorre |
|---|---|---|
invalidParameters | 400 | Parâmetro de filtro inválido (ex.: status fora do enum, data malformada). Veja error.params. |
webhookDispatchIdInvalid | 400 | ID de dispatch inválido (relevante ao referenciar um dispatch, ex.: em Redispatch). |
unauthorized | 401 | SelectKey ausente, inválida ou revogada. |
forbidden | 403 | Autenticado, mas sem permissão para listar dispatches. |
unprocessableEntity | 422 | Combinação de parâmetros não processável (regra de negócio). |
tooManyRequests | 429 | Limite de requisições excedido — respeite error.retryAfterMinutes e use backoff. Veja API Limits. |
serverError | 500 | Erro interno — repita com backoff; se persistir, contate o suporte. |
Boas práticas
- Filtre no servidor, não no cliente. Combine
status=failed(ouonlyerrored=true) comendpoint=para isolar exatamente as entregas problemáticas, em vez de baixar tudo e filtrar localmente. - Pagine sempre. Use
limit(até100) comoffset, e sigahasMore/pageaté 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.5xxindica erro no seu servidor;404sugere rota errada; ausência deresponseStatusCodeaponta timeout de rede. - Para reenviar, vá ao Redispatch. Identificou um
wdi_...comstatus: failedque 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
- Overview — o que são webhook dispatches e o modelo do objeto.
- Analytics — métricas agregadas de entrega (taxas de sucesso/falha).
- Redispatch — reenviar uma tentativa de entrega que falhou.
- Paginação · Convenções · Autenticação
How is this guide?