Receba atualizações automáticas e em tempo real do airfocus conectando seus aplicativos favoritos usando nossos Webhooks.
Benefícios da utilização de webhooks
Os webhooks permitem que o airfocus e outros aplicativos funcionem juntos de forma fácil e em tempo real. Isso significa que as atualizações e notificações acontecem rapidamente, sem a necessidade de aplicativos adicionais ou programação complexa.
Configuração inicial de um novo webhook
Crie um novo espaço de trabalho no airfocus ou selecione aquele em que deseja criar um novo webhook.
Requisitos:
- Permissões "completas" para o espaço de trabalho no qual você deseja configurar o webhook.
- Assinatura paga para plano Profissional ou Corporativo.
- Conhecimento técnico para configuração adequada.
Você pode adicionar vários webhooks a um determinado espaço de trabalho (por exemplo, a diferentes canais do Slack para diferentes públicos-alvo).
Para isso, basta acessar a seção Extensões dentro do seu espaço de trabalho, clicar em "Adicionar integração" e "Conectar" em Webhook.
Em seguida, dê um nome ao seu webhook (opcional) e selecione para quais eventos as solicitações devem ser acionadas.
Nas opções de solicitação, escolha o formato do marcador de posição e o método , e cole o URL do seu webhook no campo URL. Você também pode adicionar cabeçalhos às suas solicitações, se necessário.
Opcionalmente, você também pode configurar o corpo da sua solicitação no formato de espaço reservado escolhido acima.
{
"blocos": [
{
"type": "divider"
},
{
"tipo": "seção",
"texto": {
"tipo": "mrkdwn",
"texto {{title|esc}}"
},
"acessório": {
"tipo": "botão",
"texto": {
"type": "plain_text",
"text": "Open in airfocus",
"emoji": true
},
"valor": "clique_em_mim_123",
"URL": "{{url}}",
"action_id": "botão-action"
}
},
{
"tipo": "seção",
"texto": {
"tipo": "mrkdwn",
"texto": "{{details|esc}}"
}
}
]
}Para obter documentação detalhada sobre as opções de personalização dos seus webhooks, leia a seção a seguir.
Caso de uso: receber notificações do Slack sobre atualizações do airfocus.
Para este caso de uso, nosso objetivo é configurar um webhook que enviará uma mensagem do Slack para um canal de nossa escolha sempre que um item do espaço de trabalho para o qual configuramos o webhook tiver seu status atualizado.
Para isso, precisamos configurar um aplicativo Slack para gerar um URL de webhook e, em seguida, configurar o restante da integração no airfocus.
como fazer uma URL de webhook para seu canal Slack :
-
Crie um novo aplicativo Slack no espaço de trabalho do Slack onde você deseja receber as notificações do airfocus.
- Na página de Funcionalidades, ative a opção Ativar Webhooks de Entrada .
- Clique em Adicionar novo webhook ao espaço de trabalho.
- Selecione um canal para o qual o aplicativo irá publicar e clique em Permitir.
-
Copie o URL do webhook e abra o espaço de trabalho do airfocus para o qual deseja configurar as atualizações.
Como configurar seu webhook no airfocus para enviar notificações de atualização de eventos para o Slack:
- No popover de extensões, clique em “Adicionar integração”.
- Na visão geral da integração, clique em “Conectar” abaixo da integração “Webhooks”.
- Dê um nome ao seu webhook (opcional) e selecione para quais eventos as solicitações devem ser acionadas. → “Status atualizado” para este caso de uso.
- Nas opções de solicitação, selecione “Slack markdown” como formato de espaço reservado e “publicação” como método. Agora, cole a URL do webhook que você copiou do Slack no campo de URL.
- Para receber mensagens do Slack formatadas corretamente, cole o seguinte modelo no campo do corpo da mensagem e clique em atualizar.
-
{
"blocos": [
{
"type": "divider"
},
{
"tipo": "seção",
"texto": {
"tipo": "mrkdwn",
"texto {{title|esc}}"
},
"acessório": {
"tipo": "botão",
"texto": {
"type": "plain_text",
"text": "Open in airfocus",
"emoji": true
},
"valor": "clique_em_mim_123",
"URL": "{{url}}",
"action_id": "botão-action"
}
},
{
"tipo": "seção",
"texto": {
"tipo": "mrkdwn",
"texto": "{{details|esc}}"
}
}
]
}
-
- Agora você receberá uma mensagem no Slack, no canal escolhido, sempre que o status de qualquer item no espaço de trabalho for alterado.
Receba atualizações airfocus no Microsoft Teams
Observação: o recurso de conector webhook do Microsoft Teams será desativado no final de abril de 2026. O guia abaixo inclui instruções sobre como usar o recurso de fluxo de trabalho como alternativa.
O recurso de fluxo de trabalho Microsoft Teams permite configurar um webhook que envia uma mensagem do Equipes para um canal designado quando itens dentro de um determinado espaço de trabalho airfocus são atualizados. Para isso, você precisará gerar um URL de webhook no Microsoft Teams e, em seguida, configurar o restante da integração no airfocus.
Criar um URL de webhook no Microsoft Teams
Para gerar um URL de webhook no Microsoft Teams, siga estes passos:
- Faça login no Microsoft Teams.
- Clique no menu de três pontos no menu de navegação, localizado no canto esquerdo.
- Select fluxo de trabalho.
- Na barra de pesquisa, digite “webhook”.
- Selecione publicação para um canal quando uma solicitação de webhook for recebida.
- Digite um nome para o seu fluxo de trabalho (por exemplo, "atualizações airfocus ").
- Clique em Avançar.
- Em “Detalhes”, selecione a Equipe e o Canal específicos onde deseja que as atualizações apareçam.
- Clique em Adicionar fluxo de trabalho.
- Na tela de confirmação, copie a URL da publicação.
- Este é o URL do webhook que você precisará colar no airfocus.
- Clique em Concluído para finalizar a configuração.
Configure seu webhook no airfocus
Para configurar seu webhook no airfocus, siga estes passos:
- Abra o espaço de trabalho airfocus para o qual deseja enviar atualizações para o Microsoft Teams.
- Clique em Extensões no canto superior direito do espaço de trabalho.
- Selecione Adicionar integração.
- Em “Webhooks”, clique em Conectar.
- Digite um nome para o webhook.
- Em “Eventos”, selecione o tipo de atualizações que deseja enviar para o Microsoft Teams.
- Em “Formato de espaço reservado”, selecione Markdown.
- Em “Método”, selecione publicação e cole o URL que você gerou no Microsoft Teams em “URL”.
- Selecionar + Adicionar cabeçalho.
- Em “Nome do cabeçalho”, digite “Content-Type”.
- Em “Valor do cabeçalho”, digite “aplicativo/json”.
- Para receber mensagens do Microsoft Teams formatadas corretamente, cole o seguinte modelo no campo do corpo da mensagem.
{ "tipo": "AdaptiveCard", "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", "versão": "1.4", "corpo": [ { "tipo": "Bloco de Texto", "texto": "{{title}}", "Tamanho": "Médio", "peso": "Mais ousado", "envolver": verdadeiro }, { "tipo": "Bloco de Texto", "texto {{details}}", "envolver": verdadeiro } ], "ações": [ { "tipo": "Action.OpenUrl", "título": "Abrir no airfocus", "URL": "{{url}}" } ] }
- Clique em Atualizar no canto inferior direito da página.
Agora você receberá atualizações no canal do Microsoft Teams que configurou na primeira seção.
Configuração de requisições HTTP - documentação técnica
Método
Por padrão, está configurado para publicação, mas também pode ser alterado para GET ou PUT. Outros métodos não são suportados.
URL
- não deve estar vazio
- Só é possível iniciar com https:// (outros esquemas ou esquemas vazios não são suportados).
- Deve ter um nome de domínio público com um domínio de nível superior bem conhecido (IPs não são suportados).
Cabeçalhos
- A autorização é suportada.
- O Content-Type é suportado.
- Cabeçalhos personalizados que começam com x- são suportados
- Outros cabeçalhos não são suportados.
Corpo
Define o corpo da requisição do webhook.
Pode conter qualquer texto com até 2000 caracteres.
Para preencher o corpo da requisição com dados de eventos relevantes, fornecemos uma série de marcadores que nosso servidor substitui por dados de eventos antes de enviar a requisição.
Formato de espaço reservado
Especifica como os espaços reservados do tipo RichText devem ser pré-renderizados pelo nosso servidor. Por exemplo, o marcador de posição {{title}} pode conter uma string como "John updated field Labels on item Fix the botão ", que contém formatação de texto avançada como negrito, itálico, etc., e, portanto, o formato do marcador de posição especifica em qual sintaxe específica essa formatação deve ser transformada. Formatos disponíveis:
| Nome | Descrição | Exemplo |
| markdown | Markdown padrão | John atualizou os rótulos do campo no item Corrigir o botão |
| HTML | <b>John</b> atualizou o campo <i>Rótulos</i> no item <b>Corrigir o botão</b> |
|
| texto | formatação removida | John atualizou os rótulos do campo no item Corrigir o botão |
| Slack | Slack especial mrkdwn | *John* atualizou o campo *Rótulos* no item *Corrigir o botão* |
Espaços reservados
| Placeholder | Tipo | Descrição | Exemplo |
{{type}} |
String | tipo de evento | item atualizado |
{{title}} |
Texto (RichText) | descreve a ação do evento | John atualizou os rótulos do campo no item Corrigir o botão |
{{details}} |
Texto (RichText) | detalhes adicionais do evento (por exemplo) (O que foi alterado) | Valor antigo ⇒ Valor novo |
{{url}} |
String | URL de chamada à ação para cada evento específico (por exemplo, um link para um espaço de trabalho ou um item) |
https://myteam.airfocus.com/w/workspaceId?item=itemId *Substitua airfocus.com por airfocus.app se você estiver localizado nos EUA ou na região da Ásia-Pacífico e sua conta tiver sido criada após setembro de 2025. |
{{event}} |
JSON | Dados JSON completos sobre o evento atual | Veja o modelo de carga útil do evento abaixo. |
{{title|esc}} |
Texto (RichText) | igual a {{title}} , mas todas as aspas duplas são escapadas. |
Transforma uma string com aspas duplas em uma string com aspas duplas. |
{{details|esc}} |
Texto (RichText) | igual a {{details}} , mas todas as aspas duplas são escapadas. |
Transforma uma string com aspas duplas em uma string com aspas duplas. |
Modelos de dados
Modelo de carga útil de evento
Um objeto de nível superior, produzido para cada evento. Contém dados sobre o evento, bem como dados básicos incorporados sobre todas as entidades relacionadas a esse evento.
| Campo | Tipo | Obrigatório | Descrição |
| Evento | Evento | sim | dados básicos sobre o evento |
| Incorporar | Incorporação de evento | sim | Dados adicionais sobre o evento - principalmente nomes de itens/espaço de trabalho/campos/etc. relacionados a este evento. |
| filtro correspondente | Filtro de Eventos | sim | um dos filtros de eventos selecionados nas configurações de integração, que correspondeu ao evento atual. |
Modelo de evento
Dados básicos sobre o evento
| Campo | Tipo | Obrigatório | Descrição |
| Id | UUID | sim | ID único do evento |
| Iniciador | Iniciador de Evento | sim | Informações sobre quem iniciou este evento. |
| Dados | Dados do evento | sim | Os dados reais do evento. É diferente para cada tipo de evento específico. |
| criadoEm | Timestamp | sim | quando o evento acontecer |
Modelo EventInitiator
Informações sobre quem iniciou este evento. Na maioria dos casos, o userId será definido. Também é possível que haja um userId e um integrationId definidos - por exemplo, se um usuário pressionou o botão "sincronizar integração", o que gerou o evento.
| Campo | Tipo | Obrigatório | Descrição |
| IdUsuário | UUID | NÃO | definido se este evento foi iniciado por um usuário |
| ID do aplicativo | UUID | NÃO | definido se este evento foi iniciado por um aplicativo |
| ID de integração | UUID | NÃO | definido se este evento foi iniciado por uma integração |
| ID do evento | UUID | NÃO | definido se este evento foi iniciado por outro evento |
| ID da solicitação | UUID | NÃO | definido se este evento foi iniciado dentro de uma requisição HTTP |
Modelo EventEmbed
Dados adicionais sobre o evento - principalmente nomes de itens/espaço de trabalho/campos/etc. relacionados a este evento.
| Campo | Tipo | Obrigatório | Descrição |
| Equipes | {UUID: TeamInfo} | NÃO | um mapa hash de IDs de Equipe para dados de Equipe |
| de usuários | {UUID: UserInfo} | NÃO | um mapa hash de IDs de usuário para dados de usuário |
| apps | {UUID: AppInfo} | NÃO | um mapa hash de IDs de aplicativos para dados de aplicativos |
| Espaços de trabalho | {UUID: WorkspaceInfo} | NÃO | um mapa hash de IDs de espaço de trabalho para dados de espaço de trabalho |
| integrações | {UUID: IntegrationInfo} | NÃO | um mapa hash de IDs de integração para dados de integração |
| campos | {UUID: FieldInfo} | NÃO | um mapa hash de IDs de campos para dados de campos |
| status | {UUID: StatusInfo} | NÃO | um mapa hash de IDs de status para dados de status |
| itens | {UUID: ItemInfo} | NÃO | um mapa hash de IDs de itens para dados de itens |
Modelo TeamInfo
| Campo | Tipo | Obrigatório | Descrição |
| nome | String | sim | Nome da equipe |
| lesma | String | sim | Equipe URL slug |
| URL base | String | sim | Exemplo: https://myteam.airfocus.com *Substitua airfocus.com por airfocus.app se você estiver localizado nos EUA ou na região da Ásia-Pacífico e sua conta tiver sido criada após setembro de 2025. |
Modelo de informações do usuário
| Campo | Tipo | Obrigatório | Descrição |
| ID da equipe | UUID | sim | ID da Equipe a qual este usuário pertence |
| nome completo | String | sim | nome completo do usuário |
Modelo AppInfo
| Campo | Tipo | Obrigatório | Descrição |
| ID da equipe | UUID | sim | ID da Equipe à qual este aplicativo pertence |
| tipoId | String | sim | um dos seguintes: formulários, insights, espelho, portal, priorização |
Modelo WorkspaceInfo
| Campo | Tipo | Obrigatório | Descrição |
| ID da equipe | UUID | sim | ID da Equipe a qual este espaço de trabalho pertence |
| nome | String | sim | nome do espaço de trabalho |
Modelo IntegrationInfo
| Campo | Tipo | Obrigatório | Descrição |
| ID do espaço de trabalho | UUID | sim | ID do espaço de trabalho ao qual esta integração pertence |
| tipoId | String | sim | Uma das seguintes opções: Asana, Azure DevOps, Clubhouse, GitHub, Intercom, Jira, Planner, Trello |
Modelo de informações de status
| Campo | Tipo | Obrigatório | Descrição |
| ID do espaço de trabalho | UUID | sim | ID do espaço de trabalho ao qual este status pertence |
| nome | String | sim | nome do status |
| categoria | String | sim | uma das seguintes opções: rascunho, ativo, fechado |
ItemInfo modelo
| Campo | Tipo | Obrigatório | Descrição |
| ID do espaço de trabalho | UUID | sim | ID do espaço de trabalho ao qual este item pertence |
| statusId | UUID | sim | ID do status do item |
| nome | String | sim | nome do item |
Modelo EventData
EventData é um tipo de união - pode ser qualquer um dos tipos especificados:
Item criado
| Campo | Tipo | Obrigatório | Descrição |
| itemId | UUID | sim | ID do item criado |
Item atualizado
| Campo | Tipo | Obrigatório | Descrição |
| itemId | UUID | sim | ID do item atualizado |
| status | {prev: UUID, next: UUID} | NÃO | IDs antigo e novo do status (se alterado) |
| cor | {prev: String, next: String} | NÃO | IDs antigo e novo da cor do item (se alterada) |
| IDs de usuário atribuídos | {prev: UUID[], next: UUID[]} | NÃO | Lista antiga e nova de IDs de usuário atribuídos (se alterados) |
| nome | {prev: String, next: String} | NÃO | Nome antigo e novo do item (se alterado) |
| Descrição | {prev: RichText, next: RichText} | NÃO | Descrição antiga e nova do item (se alterada) |
| Descrição | { UUID: { prev: JSON, next: JSON } } | NÃO | um mapa hash de IDs de campos para seus valores alterados; cada valor é um JSON que depende do tipo do campo. |
| arquivado | {prev: Boolean, next: Boolean} | NÃO | Arquivar antigo e novo (se alterado) |
Dar feedback sobre este artigo
Gostaria de compartilhar sua opinião sobre este artigo? Conte-nos sobre sua experiência aqui.