Idempotency-Key devolve, em vez disso, a execução existente do mesmo workflow.
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 Passo 4: Rode o workflow para o caminho de criar e ativar. - Conceda a permissão
executeno recursowebhooksa cada sistema que você deixa chamar o caminho. Veja Protegendo um webhook. Uma rota com o contratoxsdtambém confere a permissãovalidateno recursoxsd-schemascom o token do chamador. - Para o contrato
xsd: um documento XSD no registro. Envie ele com Enviar um schema XSD e guarde o id que ele retorna. - 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. - Para uma assinatura de webhook do Streaming Hub: defina o
endpointdela como Disparar um webhook a partir do Streaming Hub. Essa rota inicia o mesmo workflow e confere a assinatura do Hub em vez de um bearer token. O deployment precisa ligá-la, e o signing secret da assinatura precisa ser igual ao que o deployment guarda para o seu tenant. O ping de verificação do Hub responde204quando a assinatura dele é verificada, e nenhum workflow roda.
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. Omita format em xsd e openapi. Um valor diferente de "xml" em xsd, ou diferente de "json" em openapi, faz o salvamento falhar com FLK-0934.
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. 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.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 que não é um nome de header válido, repete outro nome ou está na lista de bloqueio 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 devolve a execução original em vez de iniciar outra. Em uma rota async, um replay terminal devolve um recibo HTTP 200 com idempotencyReplayed: true e o status original. Em uma rota sync, o status e o corpo seguem response_view e qualquer responseStatusCode terminal: full e receipt incluem os metadados do replay, enquanto final_output e uma resposta passthrough direta não garantem isso. Envie uma nova chave para executar o workflow de novo. O replay dura enquanto a primeira execução existir: o Flowker pode apagar uma execução finalizada só de leitura depois da janela de retenção, e a mesma chave então inicia uma nova execução. Uma chave que você já usou em um workflow diferente responde 409 com FLK-0511.
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.

