Skip to main content
O Flowker traz conectores para os serviços do catálogo dele. Quando o serviço que você quer chamar é seu — uma API interna, a API de um parceiro, qualquer uma com um documento OpenAPI publicado — você sobe esse documento e um node de workflow chama as operações dele direto. Você faz isso uma vez por documento: sobe o documento, cria uma configuração de provider que aponta para ele e depois endereça uma operação a partir de cada node que chama o serviço.

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_BUCKET guarda os documentos OpenAPI que você sobe — veja Variáveis de ambiente do Flowker.
  • Um workflow em estado draft para editar. Um workflow ativo fica bloqueado, então chame Mover o workflow para draft primeiro e ative-o de novo depois.
O Lerian Console cobre o mesmo caminho. Providers → + New Provider → Add your own API seleciona um documento já enviado e define a URL base e a autenticação — veja Adicionando um provider.

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 de config.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 entrada schemaBindings 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.
A resposta devolve o id da nova configuração. Guarde-o — o Passo 4 o coloca no providerConfigId de cada node que chama este serviço.
O Flowker verifica a configuração antes de armazená-la. Um 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_url quando a configuração o define e, na falta dele, a primeira entrada servers utilizável do documento, unida com operation_path.
  • Um parâmetro path pega o valor dele primeiro nos dados resolvidos do node e, em segundo lugar, no corpo da requisição. Todo parâmetro path precisa de um valor.
  • Um parâmetro query ou header é resolvido do mesmo jeito, e fica de fora quando nenhum valor é encontrado.
  • O corpo da requisição é o que o seu inputMapping monta. Escreva cada target exatamente 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.
O node 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.
Um trigger de webhook pode validar o payload de entrada contra uma operação do mesmo documento. Ponha input_contract em "openapi" e dê ao trigger openapi_schema_id, operation_path e operation_method — veja Configurando um trigger de webhook.

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.
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:
Para liberar um bloqueio, desabilite a configuração de provider com Desabilitar configuração de provider, ou mova o workflow para draft com Mover o workflow para draft, e exclua o documento de novo.

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.