Ciclo de vida da configuração de executor
Antes de um executor poder ser usado em um workflow, ele passa pelo seguinte ciclo de vida:

/v1/executors (listar, obter, atualizar, remover). Os estados do ciclo de vida (unconfigured, configured, tested, active, disabled) são rastreados internamente — as transições acontecem por meio da camada de serviço.
| Status | O que significa | Próximo passo |
|---|---|---|
unconfigured | Criado com detalhes de conexão mas não completamente configurado. | Configurá-lo (PATCH) |
configured | Detalhes de conexão definidos e validados. | Testar conectividade |
tested | Teste de conectividade bem-sucedido. | Ativá-lo |
active | Disponível para execução de workflows. | — |
disabled | Temporariamente fora de serviço. | Habilitá-lo |
O ciclo de vida da configuração de executor é gerenciado pela camada de serviço (comandos
MarkConfigured, MarkTested, Activate, Disable, Enable). Observe que a API HTTP atual expõe os endpoints GET, PATCH e DELETE. O PATCH atualiza os dados de configuração, mas não dispara transições de status.Passo 1: Explorar o catálogo
Antes de criar uma configuração de executor, explore o catálogo para ver o que está disponível. O catálogo é um registro somente leitura de executors e triggers integrados que vêm com o Flowker. Você não precisa criar entradas no catálogo — você as descobre e configura as que precisa.
Listar executors disponíveis
Chame o endpoint Listar executors do catálogo para ver todos os tipos de executor que o Flowker suporta — requisições HTTP, transformações de dados e mais.
Listar triggers disponíveis
Chame o endpoint Listar triggers do catálogo para ver como os workflows podem ser iniciados — webhooks ou chamadas API manuais.
Passo 2: Configurar uma conexão de provider e executor
Os executors são componentes integrados que vêm com o Flowker. Você não os cria via API — eles são descobertos pelo catálogo (
GET /v1/catalog/executors) no Passo 1.
Para usar um executor, primeiro crie uma configuração de provider que define a conexão com o serviço externo e, em seguida, gerencie as configurações de executor que associam um executor do catálogo a uma conexão de provider com configurações específicas da operação.
Criar uma configuração de provider
ChamePOST /v1/provider-configurations para configurar a conexão com seu serviço externo — incluindo a URL base, credenciais e configurações específicas do ambiente. O campo config é validado contra o JSON Schema do provider no catálogo.
Consulte Configurações de provider abaixo para detalhes e exemplos.
Gerenciar configurações de executor
Uma vez que você tenha uma configuração de provider, gerencie as configurações de executor pelos endpoints/v1/executors:
| Operação | Endpoint |
|---|---|
| Listar | GET /v1/executors |
| Consultar | GET /v1/executors/{id} |
| Atualizar | PATCH /v1/executors/{id} |
| Remover | DELETE /v1/executors/{id} |
Tipos de autenticação
O Flowker suporta múltiplos métodos de autenticação. Use o método exigido pelo seu serviço externo.
| Tipo | Descrição | Campos de configuração |
|---|---|---|
none | Sem autenticação. | — |
api_key | API key no header ou query. | key, value, location |
bearer | Bearer token no header Authorization. | token |
basic | Usuário e senha (Base64). | username, password |
oidc_client_credentials | Fluxo OAuth 2.0 client credentials com gestão automática de tokens. | tokenURL, clientID, clientSecret, scopes |
oidc_user | Fluxo OAuth 2.0 resource owner password. | tokenURL, clientID, clientSecret, username, password, scopes |
Exemplo — OIDC client credentials
Exemplo — OIDC client credentials
Configurações de provider
As configurações de provider são independentes das configurações de executor. Enquanto uma configuração de executor define como o Flowker chama uma operação específica em um serviço externo, uma configuração de provider representa uma conexão configurada a uma instância de provider — incluindo sua URL base, credenciais e configurações específicas do ambiente. Pense assim: uma configuração de provider é a conexão, e uma configuração de executor é a operação que você executa sobre essa conexão.
Criar uma configuração de provider
Crie uma configuração de provider chamando o endpoint Criar configuração de provider. Forneça oproviderId do catálogo e a configuração específica do provider (URL base, credenciais, etc.).
O campo config é validado contra o JSON Schema do provider no catálogo. Se não corresponder, a requisição retorna um erro 422.
Exemplo de requisição
Exemplo de requisição
Testar conectividade
Após criar uma configuração de provider, teste-a com o endpoint Testar configuração de provider. O teste executa três etapas — conectividade, autenticação e ponta a ponta — e retorna resultados para cada uma.Habilitar e desabilitar
As configurações de provider são criadas com statusactive. Você pode desabilitá-la temporariamente com o endpoint Desabilitar configuração de provider e reabilitá-la com o endpoint Habilitar configuração de provider.
Consulte a API de Configurações de provider para a referência completa.
Passo 3: Configurar o executor
Marque o executor como configurado chamando o endpoint Update executor configuration. Isso transiciona o status de
unconfigured para configured.
Passo 4: Validar sua configuração
Antes de usar um executor em um workflow, valide sua configuração contra o schema do catálogo usando o endpoint Validate executor config (
POST /v1/catalog/executors/{id}/validate).
Isso executa apenas a validação de JSON Schema — verifica se o seu objeto de configuração corresponde à estrutura que o executor espera (campos obrigatórios, tipos, formatos). Não testa a conectividade com o serviço externo.
Para testar a conectividade real com um serviço externo, use o endpoint Testar configuração de provider na configuração de provider. Esse endpoint executa verificações de conectividade, autenticação e ponta a ponta contra o serviço real.
Mapeamento de campos e transformação de dados
Quando os dados do workflow não correspondem ao formato esperado por um serviço externo — ou quando um serviço retorna dados em um formato que o próximo passo não consegue consumir — use mapeamentos de campos e transformações para cobrir essa lacuna. Os mapeamentos de campos e transformações são definidos dentro do objeto
data dos nodes executor. O Flowker aplica os mapeamentos de entrada antes de chamar o serviço externo e os mapeamentos de saída depois de receber a resposta.
Exemplo rápido — mapeando campos do workflow para um executor
Exemplo rápido — mapeando campos do workflow para um executor
Passo 5: Usar o executor em um workflow
Uma vez que a configuração do executor é validada, referencie-a em um workflow. O executor se torna ativo quando é usado em um workflow ativo. Para retirar temporariamente um executor de serviço, atualize sua configuração usando o endpoint Update executor configuration.
Usando um executor em um workflow
Referencie o executor em um node do tipo
executor.
O exemplo abaixo cria um workflow de validação de pagamento. Quando um pagamento chega, o Flowker chama o executor de verificação de fraude, avalia o score de risco e aprova ou rejeita o pagamento com base no resultado.
O workflow tem cinco nodes: um trigger webhook que recebe o pagamento, um node executor que chama o serviço de verificação de fraude, um node conditional que avalia o score, e dois nodes action para os resultados de aprovação e rejeição. Os edges os conectam em sequência, com o node condicional bifurcando para um ou outro caminho com base no limiar do score.
Use o endpoint Criar workflow para definir o workflow, depois Ativar, e finalmente Executar.
Exemplo — Criar um workflow de validação de pagamento
Exemplo — Criar um workflow de validação de pagamento
Exemplo — Executar o workflow
Exemplo — Executar o workflow
Disparando workflows
As execuções de workflow são disparadas via endpoint Executar workflow:
inputData para a execução. Todos os campos ficam disponíveis para os nodes seguintes via namespace workflow — por exemplo, workflow.transactionId ou workflow.amount. As saídas de nodes ficam disponíveis via o ID do node — por exemplo, check-fraud.score.
Idempotência
Para prevenir execuções duplicadas, inclua um headerIdempotency-Key na requisição. Se nenhum Idempotency-Key for fornecido, a proteção contra duplicatas não é garantida.
Triggers por webhook
Webhooks são a principal forma de sistemas externos dispararem workflows do Flowker. Em vez de o seu sistema chamar a API de execuções diretamente, você registra um caminho de webhook em um workflow e os serviços externos enviam requisições HTTP para esse caminho.
Como funciona
- Adicione um trigger node do tipo
webhookao seu workflow com umpathemethodem seudata. - Quando o workflow é ativado, o Flowker registra o caminho em seu registro de webhooks.
- Sistemas externos enviam requisições para
POST /v1/webhooks/{path}(ou o método que você configurou). - O Flowker resolve o caminho para o workflow correspondente e o executa.
Definindo um trigger node de webhook
O trigger de webhook é um node comtype: "trigger" e os seguintes campos em data:
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
triggerType | string | Sim | Deve ser "webhook". |
path | string | Sim | O caminho do webhook a registrar (ex: "payments/received"). |
method | string | Sim | Método HTTP a corresponder (ex: "POST"). |
verify_token | string | Não | Token estático para verificação de webhook. Quando definido, as requisições devem incluir um header X-Webhook-Token correspondente. |
Exemplo — Trigger node de webhook
Exemplo — Trigger node de webhook
Metadados do webhook
O Flowker injeta automaticamente um objeto_webhook no inputData da execução com metadados sobre a requisição recebida:
| Campo | Descrição |
|---|---|
_webhook.method | Método HTTP utilizado (ex: POST). |
_webhook.path | O caminho de webhook resolvido. |
_webhook.headers | Headers da requisição (excluindo Authorization, X-API-Key e X-Webhook-Token). |
_webhook.query | Parâmetros da query string. |
_webhook.remote_ip | Endereço IP do chamador. |
workflow._webhook.
Observações importantes
- Cada combinação de caminho de webhook + método só pode ser registrada por um workflow ativo. Ativar um segundo workflow com o mesmo caminho falha com um erro de conflito.
- Os caminhos de webhook suportam segmentos aninhados (ex:
payments/stripe/received). - O tamanho máximo do corpo da requisição é 1 MB.
- Desativar um workflow automaticamente remove o registro de suas rotas de webhook.
Tratamento de erros
Se um node falha, a execução para e é marcada como
failed.
Não há fallback automático. Após esgotar as retentativas, a execução falha.
Cada falha inclui:
- Node que falhou e motivo
- Número do passo e saída
- Código de erro
| Código de erro | Significado | Ação |
|---|---|---|
FLK-0504 | Execução de node falhou. | Verifique os resultados do passo e a resposta do serviço externo. |
FLK-0507 | Circuit breaker aberto. | Aguarde a recuperação ou verifique a saúde do serviço. |
Retentativas e circuit breaker
O Flowker inclui resiliência integrada para chamadas a executors.
Retentativas
Quando uma chamada a um executor falha com um erro transitório, o Flowker retenta automaticamente:- Retentativas máximas: 5 tentativas
- Estratégia de backoff: Exponencial — 1s, 2s, 4s, 8s
- Erros não retentáveis: Circuit breaker aberto, contexto cancelado, configuração inválida
Circuit breaker
O Flowker usa um circuit breaker para proteger os serviços externos de serem sobrecarregados por chamadas falhas repetidas:| Parâmetro | Valor |
|---|---|
| Limiar de falhas | 5 falhas consecutivas abrem o circuito |
| Timeout de recuperação | 30 segundos antes de tentar novamente (estado half-open) |
| Requisições half-open | 1 requisição permitida para testar a recuperação |
FLK-0507 em vez de alcançar o serviço externo. Isso previne falhas em cascata e dá tempo ao serviço externo para se recuperar.

Próximos passos
Conceitos fundamentais
Entenda workflows, nodes, edges e execuções.
Executor configurations API
Explore a API de configuração de executors.

