Skip to main content
Um gatilho de webhook é o ponto de entrada de um workflow que começa a partir de uma chamada HTTP de entrada. Você declara um caminho e um método no nó de gatilho. Quando você ativa o workflow, o Flowker serve esse caminho. Cada chamada nova aceita começa uma execução do workflow. Uma repetição com o mesmo Idempotency-Key retorna a execução existente. O input_contract opcional decide quais payloads o Flowker aceita e como ele os decodifica. Defina esse campo de forma explícita em nós novos: ele fixa o formato de payload da rota inteira. Nós mais antigos que o omitem continuam válidos. O Flowker deriva xsd quando eles trazem um schema XSD e formato XML. Caso contrário, o Flowker os trata como open com JSON como formato padrão.

Antes de começar


  • Um workflow em status draft. Um workflow ativo fica travado, então adicione o gatilho antes de ativar. Veja Primeiros passos com o Flowker para o caminho de criar e ativar.
  • Com PLUGIN_AUTH_ENABLED=true (obrigatório em produção), conceda a permissão execute no recurso webhooks a cada sistema que você deixa chamar o caminho. Veja Protegendo um webhook. Um deploy fora de produção com a autenticação de plugin desabilitada usa um passthrough que não autoriza.
  • Para o contrato xsd: um documento XSD no registro. Envie ele com Enviar um schema XSD e guarde o id que ele retorna. Para exigir a validação XSD na entrada, configure o serviço de validação de XML por XSD_VALIDATOR_URL. Quando essa variável não está definida, o Flowker decodifica XML bem formado, mas pula a validação XSD.
  • Para o contrato openapi: um documento OpenAPI no registro (Enviar um schema OpenAPI, coberto de ponta a ponta em Conectando a sua própria API). Você também precisa do caminho e do método da operação cujo corpo de requisição descreve o seu payload. Derivar o schema de uma operação mostra esse corpo de requisição.

Os gatilhos são embutidos. Você descobre eles no catálogo e nunca cria um.
1

Liste os gatilhos embutidos

Listar gatilhos do catálogo retorna cada gatilho com o id, o name e a version dele. O id do gatilho de webhook é webhook.
2

Leia o schema do gatilho de webhook

Obter um gatilho do catálogo retorna os mesmos campos mais schema, o JSON Schema contra o qual o Flowker valida o seu nó de gatilho. Leia esse campo quando você quiser a lista de campos da instância em execução.

Etapa 2: Escolha o contrato de entrada


O modo fixa o formato de payload da rota. Uma rota xsd é XML e uma rota openapi é JSON. Uma rota open usa o format que você declara. O validador atualmente também aceita format em xsd e openapi. Esses modos ignoram o campo e forçam XML ou JSON, respectivamente. Omita ele nesses casos para que a configuração não sugira que ele muda a rota. Escolha open quando o payload de quem chama não tem contrato publicado, ou quando você quer que o próprio workflow decida o que é aceitável. Quando um parceiro envia XML que um documento XSD define, escolha xsd. Escolha openapi quando um parceiro envia JSON e você tem o documento OpenAPI que o descreve.
Uma rota openapi nunca aceita um payload não verificado: quando o Flowker não consegue chegar a um veredito, ele rejeita a chamada com FLK-0720, e o workflow nunca vê esse payload. Quando a validação XSD está configurada, uma rota xsd chega ao veredito dela por esse serviço. Um documento que não está em conformidade é rejeitado com XML_VALIDATION_FAILED. O Flowker rejeita com FLK-0720 um veredito em que não pode confiar. Configure esse serviço antes de colocar uma rota xsd na frente de quem chama e exige validação de schema.

Etapa 3: Decida como o webhook responde


Em uma rota sync, o response_view define o formato do corpo: O response_view é inerte em uma rota async. Para as regras completas de passthrough e para a sobrescrita com responseStatusCode, veja Modo de resposta síncrona.
Escolha async quando quem chama precisa apenas saber que o evento chegou. Escolha sync quando quem chama precisa da resposta na mesma chamada (um parceiro que espera uma decisão na mesma conexão, por exemplo).

Etapa 4: Escreva o nó de gatilho


O gatilho de webhook é um nó com type: "trigger" e estes campos no data dele: A configuração do gatilho é um contrato fechado. Um salvamento falha com FLK-0934 quando o gatilho de webhook:
  • omite path ou method
  • não tem um campo que o modo input_contract selecionado exige
  • nomeia o id de schema ou o campo de operação de outro modo
  • leva uma chave ou um valor que o schema rejeita
Uma declaração accepted_headers inválida falha com FLK-0957.
O Flowker registra o caminho com uma barra inicial e sem barra final, então payments/received, /payments/received e payments/received/ registram todos a mesma rota.

Etapa 5: Ative o workflow


1

Crie o workflow

Envie o nó com o resto do seu workflow para Criar um workflow. O workflow chega no status draft, e o Flowker valida a configuração do gatilho aqui. Um erro de contrato responde FLK-0934.
2

Ative ele

Chame Ativar um workflow. A ativação registra o caminho e o método. Ela também resolve o que o contrato referencia. Um schema XSD ausente responde FLK-0930 e um schema OpenAPI ausente responde FLK-0931. Uma operação que o documento não declara responde FLK-0932, e uma operação sem corpo de requisição responde FLK-0933.
Um workflow ativo é dono de um par de caminho e método dentro do seu tenant. Ativar um segundo workflow no mesmo par responde FLK-0360. Desativar um workflow libera as rotas dele, então você pode passar um caminho para uma versão nova.

Etapa 6: Chame a rota e confirme que ela funciona


Envie a chamada do jeito que quem chama vai enviar:
Uma rota async nova cuja execução não é terminal responde 202 com o recibo:
Uma rota sync responde com o resultado da execução, no formato que o response_view dela seleciona. O status que ela leva depende da view e de como a execução terminou. Modo de resposta síncrona tem essas regras. Três sinais dizem que a rota funcionou:
  • Uma resposta que começou uma execução leva X-Webhook-Workflow-ID e X-Webhook-Execution-ID, então você pode ligar uma chamada ao workflow que ela alcançou e à execução que ela começou.
  • Obter resultados de uma execução informa os resultados das etapas e a saída final desse executionId.
  • A entrada da execução leva um objeto _webhook com o método, o caminho e o endereço de quem chamou. Use ele para confirmar que o workflow viu a chamada que devia ver. Veja Metadados do webhook.
Uma entrega repetida com o mesmo Idempotency-Key retorna a execução original em vez de começar outra. Em uma rota async, uma repetição terminal retorna um recibo HTTP 200 com idempotencyReplayed: true e o status original. Em uma rota sync, o status e o corpo seguem o response_view e qualquer responseStatusCode terminal: full e receipt incluem metadados de repetição, enquanto final_output e uma resposta passthrough direta não garantem isso. Envie uma chave nova para rodar o workflow de novo. Os cinco verbos têm cada um a própria página de referência: POST, GET, PUT, PATCH e DELETE.

Quando uma chamada falha


Depois que o Flowker resolve uma rota, os erros de rota JSON retornam code, title e message, enquanto os erros de rota XML retornam um documento <error>. A verificação de tamanho de corpo do FLK-0363 roda antes da resolução de rota, então ela retorna o envelope de erro JSON para todas as requisições. Veja a lista de erros do Flowker para todos os códigos e os dois formatos.

O que vem depois


Guia de integração

Conecte o workflow a serviços externos e leia as regras completas de resposta síncrona.

Guia de desenho de workflows

Monte o resto do grafo em que o gatilho entra.