biterp

Eventos

Catálogo dos eventos que podem ser assinados, o que dispara cada ação e como buscar o estado do recurso que mudou.

Todo evento tem o formato <recurso>.<ação> — por exemplo sales-orders.update ou customers.create. Você assina os pares que interessam à sua integração; cada evento assinado gera uma entrega independente.

As quatro ações

AçãoQuando é disparada
createO registro foi criado
updateQualquer campo do registro mudou — incluindo mudanças de status, baixas, alocações e autorizações fiscais
deleteO registro foi removido (exclusão lógica — ver DELETE é de mão única)
restoreUm registro removido foi restaurado

restore só acontece pelo painel

A API de Integrações não expõe restauração em nenhum recurso — desfazer uma exclusão é uma operação de usuário. Assine restore se a sua integração precisa reagir a esse desfazer feito por alguém dentro do bitERP.

Recursos assináveis

Cada recurso abaixo aceita as quatro ações. A coluna Hidratação indica se existe GET /<recurso>/:id na API de Integrações para buscar o estado completo depois de receber o evento.

Cadastros

RecursoEventosHidratação
productsproducts.create, .update, .delete, .restoreGET /products/:id
customerscustomers.create, .update, .delete, .restoreGET /customers/:id
supplierssuppliers.create, .update, .delete, .restoreGET /suppliers/:id

Financeiro

RecursoEventosHidratação
financial-accountsfinancial-accounts.create, .update, .delete, .restoreGET /financial-accounts/:id
financial-categoriesfinancial-categories.create, .update, .delete, .restoreGET /financial-categories/:id
financial-transactionsfinancial-transactions.create, .update, .delete, .restoreGET /financial-transactions/:id
receivablesreceivables.create, .update, .delete, .restoreGET /receivables/:id
payablespayables.create, .update, .delete, .restoreGET /payables/:id

Vendas e faturamento

RecursoEventosHidratação
quotesquotes.create, .update, .delete, .restoreGET /quotes/:id
sales-orderssales-orders.create, .update, .delete, .restoreGET /sales-orders/:id
invoicesinvoices.create, .update, .delete, .restoreGET /invoices/:id

Compras

RecursoEventosHidratação
purchase-invoicespurchase-invoices.create, .update, .delete, .restoreGET /purchase-invoices/:id

Sem endpoint público de hidratação

Estes recursos geram eventos, mas não têm GET /<recurso>/:id na API de Integrações. Você recebe a notificação de que algo mudou, sem uma URL pública para buscar os dados.

RecursoEventos
fiscal-rules-brfiscal-rules-br.create, .update, .delete, .restore
subscription-planssubscription-plans.create, .update, .delete, .restore
customer-subscriptionscustomer-subscriptions.create, .update, .delete, .restore
support-ticketssupport-tickets.create, .update, .delete, .restore
email-dispatchesemail-dispatches.create, .update, .delete, .restore
tenant-email-identitiestenant-email-identities.create, .update, .delete, .restore

Mudanças em itens contam como update do pai

Itens e dados específicos do país não têm eventos próprios — eles fazem parte do recurso a que pertencem:

  • Adicionar, alterar ou remover um item de um pedido de venda gera sales-orders.update, com o id do pedido.
  • O mesmo vale para itens de orçamento (quotes.update), tributos de regra fiscal (fiscal-rules-br.update) e mensagens ou anexos de chamado (support-tickets.update).
  • Alterar os dados fiscais brasileiros de um produto gera products.update, com o id do produto — não um evento separado.

Na prática: uma operação de negócio produz um evento por endpoint assinante, apontando sempre para o registro principal. Você não recebe uma enxurrada de eventos ao salvar um pedido com dez itens.

O que não gera evento

  • Recursos administrativos: usuários e permissões, API Keys, configurações da empresa, instalações OAuth, integrações nativas e mapeamento de entidades não são assináveis.
  • Dados de referência: bancos, formas de pagamento, unidades de medida, países, estados e cidades são catálogos somente leitura e não produzem eventos.
  • Leituras: consultas via API, MCP ou painel nunca disparam webhooks — só escritas.
  • A própria configuração de webhooks: alterar endpoints ou entregas não gera evento, o que evita laços de realimentação.

Do evento ao dado completo

O payload identifica o recurso, não o seu conteúdo. Para os recursos com hidratação, o caminho é:

GET /sales-orders/550e8400-e29b-41d4-a716-446655440000
Authorization: Bearer sk_...

Para eventos create, update e restore, o GET simples basta.

No evento delete, use with_deleted=true

Quando a entrega do evento delete chega, o registro já saiu das consultas padrão — um GET comum devolve 404. Busque com ?with_deleted=true para receber o registro com o campo deleted_at preenchido:

GET /sales-orders/550e8400-e29b-41d4-a716-446655440000?with_deleted=true

Se o recurso não tem endpoint público, guarde o evento e trate a notificação como um sinal (por exemplo, para avisar uma pessoa) — não há URL alternativa para buscar o conteúdo.

Nesta página