Skip to content

Começando com Webhooks

Webhooks permitem que você integre os eventos do Linte em tempo real com os seus sistemas. Sempre que algo importante acontecer dentro do Hub, você pode configurar um Webhook para notificar sua aplicação imediatamente, enviando os dados relevantes daquela ação (ex: uma demanda foi criada ou um contrato foi atualizado).

Cadastrando um Webhook via GraphQL API

Para começar a receber eventos do Linte na sua aplicação, você precisará cadastrar a URL que irá receber os webhooks (o seu endpoint).

Você pode fazer isso utilizando a nossa Core API através da mutation UserIntegrations_addWebhook.

Exemplo de Cadastro de Webhook

Aqui está um exemplo simples de como registrar seu webhook:

graphql
mutation AddWebhook($input: UserIntegrations_AddWebhook_Input!) {
  UserIntegrations_addWebhook(input: $input) {
    webhook {
      id
      name
      url
      status
      events
    }
    failures {
      code
      message
    }
  }
}
json
{
  "input": {
    "name": "Meu Webhook de Integração",
    "url": "https://api.minha-empresa.com/webhooks/linte",
    "status": "active",
    "events": [
      "REQUISITION_WAS_OPENED",
      "REQUISITION_STATUS_WAS_UPDATED"
    ]
  }
}

Para conhecer a lista completa de opções da mutation, veja a documentação do UserIntegrations_addWebhook.

Estrutura Base do Payload

Independentemente do tipo de evento que você escolher ouvir, todos os envios de webhook do Linte compartilharão uma estrutura base padrão.

Isso facilita a identificação de qual evento ocorreu e a quem ele pertence antes mesmo de processar os detalhes da demanda ou contrato.

json
{
  "__typename": "WebhookEvent",
  "eventType": "REQUISITION_WAS_OPENED_WEBHOOK", // Nome do evento com o sufixo _WEBHOOK
  "domain": "REQUISITION", // O domínio do evento (ex: REQUISITION, CONTRACT, CONTRACT_REMINDER)
  "organizationId": "5e9f8f8f-8f8f-8f8f-8f8f-8f8f8f8f8f8f", // ID da sua organização
  "actor": {
    "userId": "123e4567-e89b-12d3-a456-426614174000",
    "email": "joao.silva@empresa.com",
    "name": "João Silva"
  },
  // ... campos específicos de acordo com o domain/eventType
}

Os campos específicos de cada domínio do sistema estão detalhados nas seções abaixo: