Pular para o conteúdo
PATCH/webhooks/{id}

Atualizar webhook

webhooks:gerir

Mude nome, URL, eventos, ou pause/reative.

PATCH /webhooks/{id}

curl -X PATCH "https://chat.forsi.com.br/api/v1/webhooks/506b7dac-d0bc-4954-8d45-0015588d64b5" \
  -H "Authorization: Bearer $FORSI_CHAVE" \
  -H "Content-Type: application/json" \
  -d '{"ativo":true}'
Resposta 200
{
  "dados": {
    "id": "506b7dac-d0bc-4954-8d45-0015588d64b5",
    "nome": "CRM",
    "url": "https://seu-sistema.com.br/webhooks/forsi",
    "eventos": ["mensagem.recebida"],
    "ativo": true,
    "segredo_dica": "…a1B2c3",
    "segredo_anterior_ate": "2026-10-04T13:05:12.481Z",
    "falhas_seguidas": 0,
    "falhando_desde": "2026-10-04T13:05:12.481Z",
    "desativado_em": "2026-10-04T13:05:12.481Z",
    "motivo_desativacao": "falhas_seguidas",
    "ultima_entrega_em": "2026-10-04T13:05:12.481Z",
    "ultimo_status": 200,
    "criado_em": "2026-10-04T13:05:12.481Z",
    "atualizado_em": "2026-10-04T13:05:12.481Z",
    "entregas_24h": {"entregues":42,"falhas":0,"pendentes":0}
  }
}

Parâmetros no caminho#

  • iduuidobrigatório

    No caminho da URL.

Corpo da requisição#

JSON. Mande com Content-Type: application/json.

  • nomestringopcional
    • até 60 caracteres
  • urlstringopcional
    • até 2000 caracteres
  • eventoslista de "mensagem.recebida" | "mensagem.enviada" | "mensagem.status" | "conversa.criada" | "conversa.atribuida" | "conversa.encerrada" | "contato.criado" | "negocio.criado" | "negocio.movido" | "negocio.ganho" | "negocio.perdido" | "agendamento.criado" | "agendamento.remarcado" | "agendamento.cancelado" | "agendamento.confirmado" | "membro.convidado" | "membro.entrou" | "membro.alterado" | "membro.removido"opcional
    • mín. 1 item
    • até 19 itens
  • ativobooleanopcional

    false pausa; true reativa (zera as falhas).

Resposta#

200 com {"dados": ...}: Webhook.

  • iduuidopcional
    —
  • nomestringopcional
    —
  • urlstringopcional
    —
  • eventoslista de "mensagem.recebida" | "mensagem.enviada" | "mensagem.status" | "conversa.criada" | "conversa.atribuida" | "conversa.encerrada" | "contato.criado" | "negocio.criado" | "negocio.movido" | "negocio.ganho" | "negocio.perdido" | "agendamento.criado" | "agendamento.remarcado" | "agendamento.cancelado" | "agendamento.confirmado" | "membro.convidado" | "membro.entrou" | "membro.alterado" | "membro.removido"opcional
    —
  • ativobooleanopcional
    —
  • segredo_dicastringopcional
    • ex.: …a1B2c3
  • segredo_anterior_atedata e hora ISO 8601 ou nullopcional
    —
  • falhas_seguidasintegeropcional
    —
  • falhando_desdedata e hora ISO 8601 ou nullopcional
    —
  • desativado_emdata e hora ISO 8601 ou nullopcional
    —
  • motivo_desativacaostring ou nullopcional
    —
  • ultima_entrega_emdata e hora ISO 8601 ou nullopcional
    —
  • ultimo_statusinteger ou nullopcional
    —
  • criado_emdata e hora ISO 8601opcional
    —
  • atualizado_emdata e hora ISO 8601opcional
    —
  • entregas_24hobjectopcional
    —
  • entregas_24h.entreguesintegeropcional
    —
  • entregas_24h.falhasintegeropcional
    —
  • entregas_24h.pendentesintegeropcional
    —

Erros#

Todo erro vem como {"erro": {"codigo", "mensagem"}}. Trate pelo codigo: ele não muda.

Status de erro desta operação
StatusQuando
401Chave ausente ou inválida (resposta igual para qualquer motivo).
403Plano sem API, escopo insuficiente ou https/origem recusados.
404Não existe nesta organização.
409Conflito (repetido, Idempotency-Key com outro corpo).
422Dados inválidos ou regra de negócio (ex.: janela_fechada; conta_restrita = a Meta restringiu a conta por spam: erro traz os campos de RestricaoMeta, como ate, escopo, motivo e retry_after_s).
429Limite de requisições. Veja Retry-After.
Códigos de erro que esta área pode devolver12
  • webhook_inexistenteWebhook não encontrado.
  • entrega_inexistenteEntrega não encontrada.
  • webhook_desativadoEste webhook está desativado. Reative com PATCH {"ativo": true}.
  • entrega_em_andamentoEsta entrega ainda está em andamento.
  • entrega_ja_despachadaEsta entrega já saiu uma vez e não é repetida (entrega única, sem duplicar). Só entregas que nunca saíram podem ser reenviadas.
  • url_invalidaURL inválida: use https://, porta 443 e um nome de domínio público.
  • destino_bloqueadoEsse endereço aponta para uma rede interna ou reservada. Use um endereço público.
  • dns_falhouNão conseguimos resolver esse domínio. Confira o endereço.
  • eventos_invalidosAlgum evento não existe. Veja a lista na documentação.
  • limite_de_webhooksLimite de 10 webhooks por organização.
  • nome_invalidoNome deve ter de 1 a 60 caracteres.
  • graca_invalidahoras deve ser de 0 a 168.

Os erros que valem para qualquer rota (chave, limite, JSON) estão em Erros.