Pular para o conteúdo principal

Payloads de webhooks de eventos de saída

Esta página documenta os payloads que o Almirant envia ao seu servidor por meio de webhooks de eventos de saída. Ela não documenta os webhooks de agentes de entrada.

Todos os webhooks do Almirant enviam solicitações HTTP POST com um body JSON que segue uma estrutura consistente. Esta página documenta o formato geral e os payloads específicos de cada evento.

Formato geral

Todos os payloads compartilham esta estrutura base:

{
"id": "evt_abc123def456",
"type": "work_item.created",
"timestamp": "2025-03-15T10:30:00.000Z",
"projectId": "proj_a1b2c3d4",
"data": {
// Datos especificos del evento
}
}
CampoTipoDescrição
idstringIdentificador único do evento
typestringTipo de evento (veja a tabela de eventos abaixo)
timestampstringData e hora do evento no formato ISO 8601 (UTC)
projectIdstringID do projeto onde ocorreu o evento
dataobjectDados específicos do evento

Cabeçalhos HTTP

Cada solicitação inclui estes cabeçalhos:

CabeçalhoDescriçãoExemplo
Content-TypeTipo de conteúdoapplication/json
X-Almirant-SignatureAssinatura HMAC-SHA256 do bodya1b2c3d4e5f6...
X-Almirant-TimestampTimestamp do envio (Unix epoch em segundos)1710495000
X-Almirant-EventTipo de eventowork_item.created
X-Almirant-DeliveryID único da entrega de saída para deduplicaçãodlv_xyz789
User-AgentIdentificador do remetenteAlmirant-Webhooks/1.0
Idempotência de entregas de saída

Use X-Almirant-Delivery para detectar entregas de saída duplicadas. Se duas entregas tiverem o mesmo ID, processe apenas a primeira. Ele é diferente do cabeçalho Idempotency-Key fornecido por quem chama um webhook de agente de entrada; não misture os dois contratos.

Eventos de Work Items

work_item.created

É acionado quando um novo work item é criado em um board.

{
"id": "evt_wi_created_001",
"type": "work_item.created",
"timestamp": "2025-03-15T10:30:00.000Z",
"projectId": "proj_a1b2c3d4",
"data": {
"workItem": {
"id": "wi_abc123",
"taskId": "MC-T-42",
"title": "Implementar validacion de formulario de registro",
"description": "Agregar validacion client-side y server-side al formulario...",
"type": "task",
"priority": "high",
"boardId": "board_xyz",
"boardColumnId": "col_todo",
"boardColumnName": "To Do",
"assigneeId": "user_456",
"parentId": "wi_parent_789",
"sprintId": "sprint_001",
"createdAt": "2025-03-15T10:30:00.000Z"
}
}
}

work_item.updated

É acionado quando campos de um work item são alterados (título, descrição, prioridade, responsável etc.).

{
"id": "evt_wi_updated_002",
"type": "work_item.updated",
"timestamp": "2025-03-15T11:00:00.000Z",
"projectId": "proj_a1b2c3d4",
"data": {
"workItem": {
"id": "wi_abc123",
"taskId": "MC-T-42",
"title": "Implementar validacion de formulario de registro",
"type": "task",
"priority": "critical",
"boardId": "board_xyz",
"boardColumnId": "col_todo",
"boardColumnName": "To Do",
"assigneeId": "user_456",
"updatedAt": "2025-03-15T11:00:00.000Z"
},
"changes": {
"priority": {
"from": "high",
"to": "critical"
}
}
}
}

O campo changes contém apenas os campos que foram alterados, com o valor anterior (from) e o novo (to).

work_item.moved

É acionado quando um work item é movido entre as colunas do board, por exemplo, de "To Do" para "In Progress".

{
"id": "evt_wi_moved_003",
"type": "work_item.moved",
"timestamp": "2025-03-15T14:20:00.000Z",
"projectId": "proj_a1b2c3d4",
"data": {
"workItem": {
"id": "wi_abc123",
"taskId": "MC-T-42",
"title": "Implementar validacion de formulario de registro",
"type": "task",
"boardId": "board_xyz",
"boardColumnId": "col_in_progress",
"boardColumnName": "In Progress"
},
"move": {
"fromColumnId": "col_todo",
"fromColumnName": "To Do",
"toColumnId": "col_in_progress",
"toColumnName": "In Progress"
}
}
}

work_item.archived

É acionado quando um work item é arquivado.

{
"id": "evt_wi_archived_004",
"type": "work_item.archived",
"timestamp": "2025-03-15T16:00:00.000Z",
"projectId": "proj_a1b2c3d4",
"data": {
"workItem": {
"id": "wi_abc123",
"taskId": "MC-T-42",
"title": "Implementar validacion de formulario de registro",
"type": "task",
"boardId": "board_xyz",
"archivedAt": "2025-03-15T16:00:00.000Z"
}
}
}

Eventos de Leads

lead.created

É acionado quando um novo lead é criado no CRM.

{
"id": "evt_lead_created_001",
"type": "lead.created",
"timestamp": "2025-03-15T09:00:00.000Z",
"projectId": "proj_a1b2c3d4",
"data": {
"lead": {
"id": "lead_abc123",
"name": "Maria Garcia",
"email": "[email protected]",
"company": "Empresa S.L.",
"source": "website",
"tags": ["enterprise", "demo-requested"],
"createdAt": "2025-03-15T09:00:00.000Z"
}
}
}

lead.updated

É acionado quando os dados de um lead são atualizados.

{
"id": "evt_lead_updated_002",
"type": "lead.updated",
"timestamp": "2025-03-15T10:15:00.000Z",
"projectId": "proj_a1b2c3d4",
"data": {
"lead": {
"id": "lead_abc123",
"name": "Maria Garcia",
"email": "[email protected]",
"company": "Empresa S.L.",
"source": "website",
"updatedAt": "2025-03-15T10:15:00.000Z"
},
"changes": {
"company": {
"from": "Empresa S.L.",
"to": "Empresa Internacional S.A."
}
}
}
}

lead.stage_changed

É acionado quando um lead muda de etapa dentro de um funnel.

{
"id": "evt_lead_stage_001",
"type": "lead.stage_changed",
"timestamp": "2025-03-15T11:30:00.000Z",
"projectId": "proj_a1b2c3d4",
"data": {
"lead": {
"id": "lead_abc123",
"name": "Maria Garcia",
"email": "[email protected]"
},
"funnel": {
"id": "funnel_xyz",
"name": "Ventas Enterprise"
},
"stageChange": {
"fromStageId": "stage_discovery",
"fromStageName": "Discovery",
"toStageId": "stage_proposal",
"toStageName": "Proposal"
}
}
}

Eventos de Sprints

sprint.created

É acionado quando um novo sprint é criado.

{
"id": "evt_sprint_created_001",
"type": "sprint.created",
"timestamp": "2025-03-15T08:00:00.000Z",
"projectId": "proj_a1b2c3d4",
"data": {
"sprint": {
"id": "sprint_abc123",
"name": "Sprint 14",
"goal": "Completar modulo de facturacion y tests E2E",
"startDate": "2025-03-15",
"endDate": "2025-03-29",
"boardId": "board_xyz",
"workItemCount": 12,
"createdAt": "2025-03-15T08:00:00.000Z"
}
}
}

sprint.closed

É acionado quando um sprint é fechado.

{
"id": "evt_sprint_closed_001",
"type": "sprint.closed",
"timestamp": "2025-03-29T18:00:00.000Z",
"projectId": "proj_a1b2c3d4",
"data": {
"sprint": {
"id": "sprint_abc123",
"name": "Sprint 14",
"goal": "Completar modulo de facturacion y tests E2E",
"startDate": "2025-03-15",
"endDate": "2025-03-29",
"closedAt": "2025-03-29T18:00:00.000Z"
},
"summary": {
"totalItems": 12,
"completedItems": 10,
"incompleteItems": 2,
"completionRate": 83.3
}
}
}

Resumo dos tipos de evento

Tipo de eventoEntidadeDescrição
work_item.createdWork ItemNovo work item criado
work_item.updatedWork ItemCampos do work item alterados
work_item.movedWork ItemWork item movido entre colunas
work_item.archivedWork ItemWork item arquivado
lead.createdLeadNovo lead criado
lead.updatedLeadDados do lead atualizados
lead.stage_changedLeadLead muda de etapa no funnel
sprint.createdSprintNovo sprint criado
sprint.closedSprintSprint fechado
Novos eventos

O Almirant pode adicionar novos tipos de evento no futuro. Seu servidor deve ignorar eventos que não reconhecer, em vez de falhar, para manter compatibilidade futura.