Antes de começar
- O documento OpenAPI 3.x do seu serviço como arquivo, com no máximo 8 MiB, declarando pelo menos uma operação.
- As credenciais que o seu serviço exige e o método de autenticação que ele espera. Veja Autenticação para os métodos que o Flowker aceita.
- Uma implantação cujo registro de schemas tenha armazenamento de blobs configurado.
SCHEMA_REGISTRY_S3_BUCKETguarda os documentos OpenAPI que você sobe — veja Variáveis de ambiente do Flowker. - Um workflow em estado
draftpara editar. Um workflow ativo fica bloqueado, então chame Mover o workflow para draft primeiro e ative-o de novo depois.
Passo 1: Suba o documento OpenAPI
1
Envie o arquivo
Chame Subir um schema OpenAPI como
multipart/form-data com três partes: o file, um name e uma version.2
Guarde o id
A resposta
201 descreve o que o Flowker leu do arquivo. O id dela é o valor que cada passo seguinte referencia.Por qual chave um documento armazenado é identificado
name e version são escolha sua, com até 255 caracteres cada. O par é único no seu tenant: subir de novo o mesmo name e a mesma version responde FLK-0812. O id que o Flowker devolve é um UUID novo em cada envio, e é ele que todo o resto referencia — nunca o nome nem a versão.
O Flowker analisa o arquivo antes de armazená-lo. Um arquivo que não é um documento OpenAPI 3.x, ou que não declara nenhuma operação, responde FLK-0900. Um arquivo com mais de 8 MiB responde FLK-0901.
Os documentos que você sobe são só seus. Um documento fica visível apenas para o tenant que o subiu, e um id de outro tenant nunca é resolvido.
Passo 2: Veja as operações que você pode chamar
1
Liste o que você tem armazenado
Listar schemas OpenAPI devolve os seus documentos apenas como metadados, sem o conteúdo deles. A rota é paginada:
limit, cursor, sortBy e sortOrder, e a resposta traz nextCursor e hasMore.2
Veja as operações de um documento
Obter um schema OpenAPI devolve os mesmos metadados mais
content — o arquivo armazenado — e operations, uma entrada por operação que o documento declara.Copie o
path e o method da operação que você quer. O Passo 4 coloca os dois no node.3
Veja os nomes de campo de uma operação
Derivar o schema de uma operação recebe um
path e um method e devolve inputSchema — o corpo da requisição da operação — e outputSchema — a resposta de sucesso dela. Devolve também params, uma entrada por parâmetro que a operação declara, cada uma com o name dela, a localização in e se é required.Esses são os nomes de campo que você escreve como target e como source dos seus mapeamentos no Passo 4. Os dois parâmetros de consulta são obrigatórios, e o method não diferencia maiúsculas e precisa ser um de GET, PUT, POST, DELETE, OPTIONS, HEAD, PATCH ou TRACE; um path ausente ou um method não reconhecido respondem FLK-0304. Um caminho e um método que o documento não declara respondem FLK-0902.Passo 3: Aponte uma configuração de provider para o documento
Chame Criar uma configuração de provider com
kind em external_openapi. Esse kind é a conexão que traz o seu próprio OpenAPI: ela referencia o documento que você subiu em vez de um provider do catálogo.
Para onde vai a credencial
O segredo dentro deconfig.auth é somente de escrita. O Flowker o envia para o seu backend de segredos, o remove do documento de configuração antes de salvar o documento e o resolve a partir do backend no momento da execução. Nenhuma rota de configuração de provider o devolve. Qualquer outra coisa que você coloque no documento de configuração fica armazenada com a configuração, e uma leitura pode devolvê-la — então coloque cada credencial em config.auth.
Para rotacionar um segredo depois, envie o valor novo em uma atualização. Para manter o atual, omita o campo ou envie-o em branco enquanto auth.type não mudar — veja Autenticação.
Onde as listas de hosts permitidos são definidas
As duas listas pertencem a esta chamada de criação e, depois, a Atualizar uma configuração de provider.allowedHosts nomeia os hosts que cada node que chama por meio desta configuração pode alcançar; o Flowker verifica contra ela a URL da requisição e cada salto de redirecionamento em tempo de execução. Uma entrada com ponto inicial casa com subdomínios, então .acme-kyc.example.com casa com api.acme-kyc.example.com. As entradas são apenas nomes de host, sem literal de IP, sem curinga e sem porta.
allowedPrivateHosts é a lista companheira para um serviço que vive em uma rede privada. Uma entrada permite que esta configuração alcance um host que resolve para um endereço privado ou de loopback, que o Flowker bloqueia por padrão. Endereços de metadados de nuvem e link-local continuam bloqueados, e nenhuma entrada os alcança.
Vincule o documento
Adicione uma entradaschemaBindings para o documento que você referenciou. Cada entrada nomeia um documento armazenado: type é "openapi", schemaId é o mesmo id que você colocou em config.openapi_schema_id, e o array opcional operations restringe o vínculo às operações que os seus workflows realmente chamam.
O vínculo é o que torna visíveis os dependentes do documento. Com ele, Listar os recursos que referenciam um schema OpenAPI informa esta configuração, e uma exclusão do documento é recusada enquanto a configuração estiver ativa — veja Removendo um documento.
O Flowker resolve cada vínculo quando você salva. Um schemaId que não nomeia nenhum documento do seu tenant responde FLK-0942, e uma entrada de operations que o documento não declara responde FLK-0943, cada um nomeando a entrada que falhou. Uma entrada malformada — um type desconhecido, um schemaId que não é UUID, operations em um vínculo que não é openapi, ou uma operação sem caminho nem método — responde FLK-0293.
Exemplo de requisição
Exemplo de requisição
id da nova configuração. Guarde-o — o Passo 4 o coloca no providerConfigId de cada node que chama este serviço.config sem openapi_schema_id, ou cujo valor não é um UUID, responde FLK-0946. Um id que não nomeia nenhum documento do seu tenant responde FLK-0947. Um bloco config.auth que o Flowker não consegue ler — um tipo desconhecido, ou um tipo sem um dos campos obrigatórios dele — responde FLK-0948. Nenhuma chamada de rede acontece nesse ponto.
Passo 4: Enderece uma operação a partir de um node de workflow
Um node executor nomeia uma operação do documento com dois campos no
data dele, junto ao providerConfigId da configuração do Passo 3.
Não envie
executorId em um node assim. O Flowker resolve a configuração de provider, reconhece o kind e preenche o campo por você antes de validar o workflow. Todos os outros campos do node se comportam como descreve Referenciar a configuração de provider a partir de um node de workflow.
Como a requisição é montada
O Flowker lê a operação do documento armazenado em tempo de execução e monta a requisição a partir dela:- O destino é
config.base_urlquando a configuração o define e, na falta dele, a primeira entradaserversutilizável do documento, unida comoperation_path. - Um parâmetro
pathpega o valor dele primeiro nos dados resolvidos do node e, em segundo lugar, no corpo da requisição. Todo parâmetropathprecisa de um valor. - Um parâmetro
queryouheaderé resolvido do mesmo jeito, e fica de fora quando nenhum valor é encontrado. - O corpo da requisição é o que o seu
inputMappingmonta. Escreva cadatargetexatamente como o schema de requisição da operação o nomeia: não há objeto envolvente nem prefixo a acrescentar. Trabalhando com os dados da requisição e da resposta cobre os mapeamentos e as transformações por completo.
Exemplo — um workflow que chama duas operações do documento
Exemplo — um workflow que chama duas operações do documento
open-check envia POST https://api.acme-kyc.example.com/v1/checks com o corpo que o inputMapping dele montou. O outputMapping dele extrai dois campos da resposta, então o node seguinte lê ${open-check.checkId}.Um node que chama GET /v1/checks/{checkId} lê o parâmetro do mesmo escopo do node. Mapeie um valor para checkId e o Flowker o substitui no caminho.Passo 5: Execute e confirme que funcionou
1
Ative o workflow
Chame Ativar um workflow. A ativação registra a rota de webhook e resolve o que o contrato do trigger referencia.
2
Execute
Chame Executar um workflow com um cabeçalho
Idempotency-Key novo, ou envie uma requisição para a rota de webhook.3
Leia os resultados dos passos
Um node que chegou ao seu serviço registra a resposta sob o id dele. Com um
outputMapping, os nomes mapeados ficam direto sob esse id — open-check.checkId. Sem outputMapping, a saída do node mantém o envelope da resposta, então o corpo da resposta fica um nível abaixo, sob body.Publicando uma nova versão do seu documento
Um documento armazenado não muda. Para publicar uma revisão, suba o arquivo de novo com uma
version nova; isso lhe dá um segundo documento armazenado com o id próprio dele.
Nada troca por conta própria. Toda referência é por id, então um workflow que já está em execução continua chamando o documento que ele referencia. Para movê-lo, envie o config da configuração de provider com o novo openapi_schema_id por Atualizar uma configuração de provider. O config substitui o mapa armazenado em vez de se mesclar a ele, então inclua base_url e auth na mesma chamada. O Flowker revalida o id novo contra o seu tenant, e responde FLK-0947 quando ele não é resolvido.
Consulte Listar os recursos que referenciam um schema OpenAPI sobre o documento anterior antes de retirá-lo — a rota nomeia tudo o que ainda aponta para ele.
Versões de especificação dos serviços do catálogo
Os serviços do próprio catálogo do Flowker são resolvidos contra um registro compartilhado de especificações publicadas, separado. Três operações o gerenciam. Elas nunca tocam um documento que você subiu no Passo 1.
A fixação é por tenant. Publicar uma versão não muda nada para um tenant até que esse tenant a fixe, então um envio novo nunca move um workflow em execução para outra especificação. O Flowker lê a versão que você fixou quando informa os schemas dos executors daquele serviço no catálogo, então Obter um executor do catálogo descreve a versão que você escolheu.
Removendo um documento
1
Verifique o que quebraria
Listar os recursos que referenciam um schema OpenAPI devolve dois grupos,
providerConfigurations e workflows. Os dois estão sempre presentes, e cada entrada carrega um id, um name e um status. Uma entrada com status ativo bloqueia a exclusão; uma inativa apenas avisa.2
Exclua o documento
Excluir um schema OpenAPI responde conforme o que ainda referencia o documento:
O que pode dar errado
Veja a Lista de erros do Flowker para todos os códigos.
Próximos passos
Trabalhando com os dados da requisição e da resposta
Mapeie valores para o corpo da requisição da operação e leia a resposta dela de volta.
Configurando um trigger de webhook
Valide um payload de entrada contra uma operação do mesmo documento.
Guia de integração
Defina a autenticação, as retentativas e o circuit breaker que cada configuração de provider compartilha.
API de schemas OpenAPI
Explore os endpoints do registro de schemas.

