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:
mutation AddWebhook($input: UserIntegrations_AddWebhook_Input!) {
UserIntegrations_addWebhook(input: $input) {
webhook {
id
name
url
status
events
}
failures {
code
message
}
}
}{
"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.
{
"__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: