Visão Geral
Os Eventos Genéricos são webhooks disparados pela Morada.ai para eventos que não possuem um payload especializado. Eles seguem uma estrutura padronizada com os dados brutos do evento e um contexto opcional com informações do deal, contato e produto.Eventos suportados
| Evento | Descrição |
|---|---|
Deal.created | Novo deal criado |
Deal.owner-assigned | Responsável atribuído ao deal |
DealLog.created | Log registrado no deal |
Conversation.created | Nova conversa iniciada |
Conversation.closed | Conversa encerrada |
Conversation.updated | Conversa atualizada |
ConversationFunction.completed | Função executada durante conversa (ex: busca de imóveis, simulação) |
DeskTicket.created | Ticket de atendimento criado |
DeskTicket.owner-assigned | Responsável atribuído ao ticket |
Person.updated | Dados do contato atualizados |
Payload
Campos
event
| Campo | Tipo | Descrição |
|---|---|---|
event.type | string | Tipo completo do evento no formato Entidade.ação (ex: Conversation.closed) |
event.entity | string | Entidade do evento: Deal, Conversation, DeskTicket, ConversationFunction, DealLog, Person |
event.action | string | Ação do evento: created, updated, closed, completed, owner-assigned |
event.timestamp | string | Data/hora do evento (ISO 8601) |
event.id | string | ID único do evento |
data
O campodata contém os dados brutos do evento. A estrutura varia conforme a entidade — os exemplos abaixo ilustram os campos mais comuns:
Deal.created
Deal.created
Conversation.closed
Conversation.closed
DeskTicket.created
DeskTicket.created
ConversationFunction.completed
ConversationFunction.completed
Person.updated
Person.updated
context
O campo
context é opcional e preenchido com base no dealId do evento. Se o evento não estiver vinculado a um deal, o contexto pode ser parcial ou ausente.| Campo | Tipo | Descrição |
|---|---|---|
context.person.id | string | ID do contato |
context.person.name | string | null | Nome completo |
context.person.email | string | null | |
context.person.phone | string | null | Telefone com DDI |
context.deal.id | string | ID do deal |
context.deal.status | string | null | Status: active, won, lost |
context.deal.stageCode | string | null | Código da etapa no funil |
context.product.id | string | ID do produto/empreendimento |
context.product.name | string | null | Nome do produto/empreendimento |
context.source.id | string | ID da origem |
context.source.code | string | Código da origem |
context.source.name | string | Nome da origem |
Exemplo de uso
Resposta esperada
Retorne um status HTTP200 para confirmar o recebimento: