Métricas e análises
Recupere as tentativas de entrega (dispatches) de webhook criadas dentro de um período para medir a saúde da sua integração — taxa de sucesso, falhas e quantas retentativas foram necessárias. É uma op
Recupere as tentativas de entrega (dispatches) de webhook criadas dentro de um período para medir a saúde da sua integração — taxa de sucesso, falhas e quantas retentativas foram necessárias. É uma operação somente de leitura: você informa um intervalo de datas e recebe as linhas individuais de cada tentativa, prontas para alimentar gráficos e painéis de monitoramento.
GET /v1/webhooks/dispatches/analytics
Como funciona
Um dispatch é o registro de uma tentativa de entregar um evento (por exemplo transaction.approved) à URL do seu endpoint de webhook. Cada vez que a Selectwin tenta enviar um evento, ela cria/atualiza um dispatch com o resultado: se o seu servidor respondeu, qual código HTTP retornou, quantas tentativas foram feitas e quando.
Este endpoint devolve uma projeção enxuta desses dispatches dentro da janela initdate–enddate: apenas os campos úteis para análise (id, status, attempts, responseStatusCode, lastAttemptAt, createdAt). Ele não agrega os dados por você — não calcula "85% de sucesso" nem agrupa por dia. Você recebe as linhas e faz a agregação no seu lado (somando, agrupando por dia, calculando taxas). Pense nele como a fonte de dados crua para o seu dashboard.
O filtro de período incide sobre o createdAt do dispatch — ou seja, você vê as tentativas criadas no intervalo, não as que mudaram de status nele.
Ciclo de vida de um dispatch
O campo status percorre estes estados, e é ele que você vai contabilizar:
status | Significado |
|---|---|
pending | Tentativa criada, ainda sem resposta definitiva do seu servidor. |
retrying | Houve falha; a Selectwin agendou novas tentativas. |
success | Seu servidor respondeu com 2xx; entrega concluída. |
failed | Todas as tentativas falharam; a entrega foi abandonada. |
Quando usar
- Monitoramento e alertas: alimentar um gráfico de "taxa de entrega ao longo do tempo" e disparar alertas quando ela cair.
- Diagnóstico de incidentes: depois de uma indisponibilidade do seu servidor, medir quantas entregas falharam no período.
- Relatórios periódicos: consolidar a confiabilidade da integração por dia/semana/mês.
Quando NÃO usar: se você quer inspecionar uma entrega específica (corpo da resposta, endpoint exato, evento), use a listagem, que traz campos completos (endpoint, event, responseBody, successAt). E lembre: webhooks já são push — não use este endpoint para fazer polling em busca de novos eventos. Veja Proibição de polling.
Requisição
Headers
| Header | Obrigatório | Valor |
|---|---|---|
SelectKey | Sim | Sua chave de API. Produção começa com sl_live_; sandbox com sl_test_. Nunca use Authorization: Bearer/Basic. |
Por ser uma leitura sem corpo, não há Content-Type nem X-Idempotency-Key. Detalhes em Autenticação.
Parâmetros de consulta
Ambos os parâmetros são obrigatórios e usam datas em ISO 8601 UTC.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
initdate | string (date-time) | Sim | Início do período (inclusivo). Filtra por createdAt >=. Ex.: 2026-01-01T00:00:00Z |
enddate | string (date-time) | Sim | Fim do período (inclusivo). Filtra por createdAt <=. Ex.: 2026-01-31T23:59:59Z |
Atenção
Se você omitir initdate ou enddate, ou enviar uma data em formato inválido, a API responde 400 com error.code: invalidParameters. Sempre envie as duas datas em UTC.
Exemplo
curl -G "https://api.selectwin.io/v1/webhooks/dispatches/analytics" \
-H "SelectKey: sl_live_aBcDeFgHiJkLmNoPqRsTuVwXyZ" \
--data-urlencode "initdate=2026-01-01T00:00:00Z" \
--data-urlencode "enddate=2026-01-31T23:59:59Z"Resposta
200 OK
{
"analytics": [
{
"id": "wdi_01hqzvabc",
"status": "success",
"attempts": 1,
"responseStatusCode": 200,
"lastAttemptAt": "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/analytics",
"method": "GET",
"description": "View analytics for webhook dispatches."
},
"list": {
"href": "https://api.selectwin.io/v1/webhooks/dispatches",
"method": "GET",
"description": "List all webhook dispatches."
}
}
}Campos da resposta
| Campo | Tipo | Descrição |
|---|---|---|
analytics | array | Linhas de tentativas de entrega no período (uma por dispatch). |
merchant | object | Identificação do lojista dono dos dados. |
merchant.name | string | Nome do lojista. |
merchant.merchantId | string | ID do lojista (ex.: bus_1234567890). |
merchant.isSubAccount | boolean | Indica se é uma subconta. |
_links | object | Links HATEOAS: self (este recurso) e list (listagem completa). |
Cada item de analytics
| Campo | Tipo | Descrição |
|---|---|---|
id | string | Identificador opaco do dispatch (prefixo wdi_). Não faça parsing. |
status | string | Resultado da entrega: pending, retrying, success ou failed. |
attempts | integer | Número de tentativas de entrega realizadas. |
responseStatusCode | integer | Código HTTP devolvido pelo seu servidor na última tentativa (pode vir null enquanto não há resposta). |
lastAttemptAt | string (date-time) | Data e hora da última tentativa (ISO 8601 UTC). |
createdAt | string (date-time) | Data e hora de criação do dispatch (ISO 8601 UTC). |
Nota
Comparada à listagem, esta resposta é uma projeção leve: ela não inclui endpoint, event, responseBody, successAt nem updatedAt. Se precisar desses campos, use o endpoint de listagem.
Erros
error.code | HTTP | Quando ocorre |
|---|---|---|
invalidParameters | 400 | initdate/enddate ausente, fora de ordem ou em formato de data inválido. |
unauthorized | 401 | SelectKey ausente, inválida ou revogada. |
forbidden | 403 | A chave não tem permissão para ler analytics de dispatches. |
unprocessableEntity | 422 | Os parâmetros passaram no formato mas falharam na validação semântica. |
tooManyRequests | 429 | Limite de requisições excedido; respeite o Retry-After. |
serverError | 500 | Falha interna. Tente novamente com recuo exponencial. |
Veja o catálogo completo em Códigos de erro e o formato do envelope em Convenções. O código webhookDispatchIdInvalid aplica-se ao redespacho por dispatchId, não a este endpoint.
Boas práticas
- Agregue do seu lado para obter a taxa de sucesso. Agrupe as linhas por dia e calcule
success ÷ total(ou contefailed) — a API entrega linhas cruas, não percentuais. - Use janelas curtas e fixas. Períodos longos retornam muitas linhas; consulte por dia ou por hora para dashboards e mantenha as datas alinhadas ao seu fuso convertido para UTC.
- Vigie
responseStatusCode. Concentração de5xxindica seu servidor fora do ar;4xxcostuma ser erro de configuração (autenticação ou rota incorreta no seu receptor). - Acompanhe
attempts. Médias acima de 1 mostram que muitas entregas só passam após retentativa — sinal de instabilidade ou lentidão do seu endpoint. - Da métrica para a causa raiz. Detectou queda no gráfico? Vá para a listagem com
onlyerrored=trueestatus=failedno mesmo período para inspecionarresponseBodyeendpointdas falhas. - Não use para descobrir novos eventos. Para receber eventos em tempo real, configure um endpoint de webhook; este recurso é para análise histórica, não para polling.
Veja também
- Visão geral de Webhook Dispatches — o que é um dispatch e seu ciclo de vida.
- Listar dispatches — entregas com campos completos e filtros avançados.
- Redespachar uma entrega — reenviar manualmente um dispatch que falhou.
- Proibição de polling — por que webhooks substituem o polling.
- Autenticação e Convenções.
How is this guide?