Synergy Connect

Documentação

Reenviar os eventos desde um momento

POST/v1/webhooks/{hook_id}/replay

Coloca na fila de novo os eventos que cada número guardou desde since, passando pelo filtro atual do webhook. Cada evento volta com o MESMO X-Synergy-Delivery-Id da primeira vez: um receptor que já o processou descarta.

Limites: 30 dias para trás (7 dias para statuses), 5.000 eventos por número por chamada, e o tamanho da fila do número. truncated: true diz que sobrou evento: repita com um since mais recente. O webhook precisa estar ativo.

Requer#

Escopo da chave
Gerenciar webhooks managementComo os escopos funcionam
Recurso do plano
API e webhooks apiVer os planos que incluem
Formato
Próprio do Synergy. Erros em { "error": "…" }.

Parâmetros#

No caminho#

No caminho
NomeTipoObrigatórioDescrição
hook_idstringobrigatórioO id do webhook.

Cabeçalhos#

Cabeçalhos
NomeTipoObrigatórioDescrição
AuthorizationstringobrigatórioSua chave de API, no formato Bearer <chave>. Veja Autenticação.

Corpo#

Tipo de conteúdo: application/json.

Campos do corpo
NomeTipoObrigatórioDescrição
sinceintegerobrigatórioUm momento dos últimos 30 dias, no passado (ms desde 1970).

Respostas#

Respostas
StatusCódigoQuando acontece
200—Eventos na fila
400—since fora dos últimos 30 dias
401—Chave revogada ou desconhecida
401190Chave malformada ou forjada
403—A chave não tem o escopo management
403—O plano da organização não inclui a API
403—A conta está em modo leitura ou suspensa por falta de pagamento
404—Webhook não encontrado
409—Webhook desativado
413—Corpo grande demais
429—Limite de taxa

Os erros no formato da Meta trazem o código em error.code. Ver todos os erros.

Corpo da resposta 200#

Campos da resposta 200
NomeTipoObrigatórioDescrição
oktrueobrigatório
queuedintegerobrigatórioEventos colocados na fila, somados entre os números.
truncatedbooleanobrigatóriotrue = algum número tinha mais de 5.000 eventos no período, ou a fila dele encheu: repita com um since mais recente.
suspendedintegerobrigatórioNúmeros em que o webhook está suspenso (nada foi reenviado neles).
failedintegerobrigatórioNúmeros que não responderam.

Limites de taxa#

  • Gestão: 30 requisições a cada 60 s por chave (API_MGMT_LIMIT).

Notas#

  • Só os eventos que a Meta mandou para o número são reenviados: ecos de mensagens do Inbox, synergy_conversations e eventos da conta (WABA) não ficam guardados para replay.
Requisição

curl

curl -X POST 'https://api.synergyconnect.com.br/v1/webhooks/7c1f0c7e-4b53-4c7b-9a51-3f6f0a2d9e10/replay' \
  -H "Authorization: Bearer $SYNERGY_API_KEY" \
  -H 'Content-Type: application/json' \
  -d "{\"since\": $(( ($(date +%s) - 3600) * 1000 ))}"

JavaScript

const res = await fetch('https://api.synergyconnect.com.br/v1/webhooks/7c1f0c7e-4b53-4c7b-9a51-3f6f0a2d9e10/replay', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.SYNERGY_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ since: Date.now() - 3_600_000 }),
});
console.log(res.status, await res.json());

Python

import os
import time

import requests

res = requests.post(
    "https://api.synergyconnect.com.br/v1/webhooks/7c1f0c7e-4b53-4c7b-9a51-3f6f0a2d9e10/replay",
    headers={
        "Authorization": f"Bearer {os.environ['SYNERGY_API_KEY']}",
    },
    json={"since": int((time.time() - 3600) * 1000)},
)
print(res.status_code, res.json())
Resposta

200

{
  "ok": true,
  "queued": 37,
  "truncated": false,
  "suspended": 0,
  "failed": 0
}

400

{
  "error": "Invalid body",
  "issues": [
    {
      "code": "custom",
      "path": [
        "since"
      ],
      "message": "escolha um momento dos últimos 30 dias"
    }
  ]
}

401

{
  "error": "Invalid or revoked key"
}

Há 2 casos com este status; veja a tabela de respostas.

403

{
  "error": "This key lacks the management scope"
}

Há 3 casos com este status; veja a tabela de respostas.

404

{
  "error": "Webhook not found"
}

409

{
  "error": "Enable the webhook before replaying events"
}

413

{
  "error": "The body is too large (16 KB max)"
}

429

{
  "error": "Rate limit hit"
}

Ficou com dúvida? Escreva para suporte@synergyconnect.com.br.