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ãoexecuteno recursowebhooksa 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 porXSD_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.
Etapa 1: Leia o contrato do gatilho no catálogo
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.
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
pathoumethod - não tem um campo que o modo
input_contractselecionado 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
accepted_headers inválida falha com FLK-0957.
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.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:
async nova cuja execução não é terminal responde 202 com o recibo:
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-IDeX-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
_webhookcom 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.
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.

