Skip to main content
Flowker trae conectores para los servicios de su catálogo. Cuando el servicio que quieres llamar es tuyo — una API interna, la API de un partner, cualquiera con un documento OpenAPI publicado — subes ese documento y un node de workflow llama a sus operaciones directamente. Haces esto una vez por documento: lo subes, creas una configuración de provider que apunta hacia él y después direccionas una operación desde cada node que llama al servicio.

Antes de empezar


  • El documento OpenAPI 3.x de tu servicio como archivo, de 8 MiB como máximo, que declare al menos una operación.
  • Las credenciales que exige tu servicio y el método de autenticación que espera. Consulta Autenticación para ver los métodos que admite Flowker.
  • Un despliegue cuyo registro de esquemas tenga almacenamiento de blobs configurado. SCHEMA_REGISTRY_S3_BUCKET guarda los documentos OpenAPI que subes — consulta Variables de entorno de Flowker.
  • Un workflow en estado draft para editar. Un workflow activo queda bloqueado, así que llama primero a Mover el workflow a draft y actívalo de nuevo después.
La Lerian Console cubre el mismo camino. Providers → + New Provider → Add your own API selecciona un documento ya subido y define la URL base y la autenticación — consulta Agregar un provider.

Paso 1: Sube el documento OpenAPI


1

Envía el archivo

Llama a Subir un esquema OpenAPI como multipart/form-data con tres partes: el file, un name y una version.
2

Guarda el id

La respuesta 201 describe lo que Flowker leyó del archivo. Su id es el valor que referencia cada paso posterior.

Por qué clave se identifica un documento almacenado

name y version los eliges tú, con hasta 255 caracteres cada uno. El par es único en tu tenant: subir de nuevo el mismo name y la misma version responde FLK-0812. El id que devuelve Flowker es un UUID nuevo en cada subida, y es lo que referencia todo lo demás — nunca el nombre ni la versión. Flowker analiza el archivo antes de almacenarlo. Un archivo que no es un documento OpenAPI 3.x, o que no declara ninguna operación, responde FLK-0900. Un archivo de más de 8 MiB responde FLK-0901. Tus documentos subidos son solo tuyos. Un documento solo es visible para el tenant que lo subió, y un id de otro tenant nunca se resuelve.

Paso 2: Consulta las operaciones que puedes llamar


1

Lista lo que tienes almacenado

Listar esquemas OpenAPI devuelve tus documentos solo como metadatos, sin su contenido. Está paginado: limit, cursor, sortBy y sortOrder, y la respuesta trae nextCursor y hasMore.
2

Consulta las operaciones de un documento

Obtener un esquema OpenAPI devuelve los mismos metadatos más content — el archivo almacenado — y operations, una entrada por cada operación que declara el documento.Copia el path y el method de la operación que quieres. El Paso 4 los pone en el node.
3

Consulta los nombres de campo de una operación

Derivar el esquema de una operación recibe un path y un method y devuelve inputSchema — el cuerpo de la solicitud de la operación — y outputSchema — su respuesta correcta. También devuelve params, una entrada por cada parámetro que declara la operación, cada una con su name, su ubicación in y si es required.Esos son los nombres de campo que escribes como target y como source de tus mapeos en el Paso 4. Los dos parámetros de consulta son obligatorios, y el method no distingue mayúsculas y debe ser uno de GET, PUT, POST, DELETE, OPTIONS, HEAD, PATCH o TRACE; un path ausente o un method no reconocido responden FLK-0304. Una ruta y un método que el documento no declara responden FLK-0902.

Paso 3: Apunta una configuración de provider hacia el documento


Llama a Crear una configuración de provider con kind en external_openapi. Ese kind es la conexión que trae tu propio OpenAPI: referencia el documento que subiste en lugar de un provider del catálogo.

Dónde va la credencial

El secreto dentro de config.auth es de solo escritura. Flowker lo envía a tu backend de secretos, lo elimina del documento de configuración antes de guardar el documento y lo resuelve desde el backend en el momento de la ejecución. Ninguna ruta de configuración de provider lo devuelve. Cualquier otra cosa que coloques en el documento de configuración se almacena con la configuración, y una lectura puede devolverla — así que pon cada credencial en config.auth. Para rotar un secreto más adelante, envía el nuevo valor en una actualización. Para mantener el actual, omite el campo o envíalo vacío mientras auth.type no cambie — consulta Autenticación.

Dónde se definen las listas de hosts permitidos

Las dos listas pertenecen a esta llamada de creación, y después a Actualizar una configuración de provider. allowedHosts nombra los hosts a los que puede llegar cada node que llama a través de esta configuración; Flowker comprueba contra ella la URL de la solicitud y cada salto de redirección en tiempo de ejecución. Una entrada con un punto inicial coincide con los subdominios, así que .acme-kyc.example.com coincide con api.acme-kyc.example.com. Las entradas son solo nombres de host, sin literal de IP, sin comodín y sin puerto. allowedPrivateHosts es la lista compañera para un servicio que vive en una red privada. Una entrada permite que esta configuración llegue a un host que resuelve a una dirección privada o de loopback, que Flowker bloquea por defecto. Las direcciones de metadatos de nube y link-local siguen bloqueadas, y ninguna entrada las alcanza.

Vincula el documento

Agrega una entrada schemaBindings para el documento que referenciaste. Cada entrada nombra un documento almacenado: type es "openapi", schemaId es el mismo id que pusiste en config.openapi_schema_id, y el array opcional operations restringe el vínculo a las operaciones que tus workflows llaman de verdad. El vínculo es lo que hace visibles los dependientes del documento. Con él, Listar los recursos que referencian un esquema OpenAPI informa esta configuración, y un borrado del documento se rechaza mientras la configuración esté activa — consulta Eliminar un documento. Flowker resuelve cada vínculo cuando guardas. Un schemaId que no nombra ningún documento de tu tenant responde FLK-0942, y una entrada de operations que el documento no declara responde FLK-0943, cada uno nombrando la entrada que falló. Una entrada mal formada — un type desconocido, un schemaId que no es un UUID, operations en un vínculo que no es openapi, o una operación sin ruta ni método — responde FLK-0293.
La respuesta devuelve el id de la nueva configuración. Guárdalo — el Paso 4 lo pone en el providerConfigId de cada node que llama a este servicio.
Flowker comprueba la configuración antes de almacenarla. Un config sin openapi_schema_id, o cuyo valor no es un UUID, responde FLK-0946. Un id que no nombra ningún documento de tu tenant responde FLK-0947. Un bloque config.auth que Flowker no puede leer — un tipo desconocido, o un tipo al que le falta uno de sus campos obligatorios — responde FLK-0948. En este punto no se hace ninguna llamada de red.

Paso 4: Direcciona una operación desde un node de workflow


Un node executor nombra una operación del documento con dos campos en su data, junto al providerConfigId de la configuración del Paso 3. No envíes executorId en un node así. Flowker resuelve la configuración de provider, reconoce el kind y rellena el campo por ti antes de validar el workflow. Todos los demás campos del node se comportan como describe Referenciar la configuración de provider desde un node de workflow.

Cómo se arma la solicitud

Flowker lee la operación del documento almacenado en tiempo de ejecución y arma la solicitud a partir de ella:
  • El destino es config.base_url cuando la configuración lo define, y en su defecto la primera entrada servers utilizable del documento, unida con operation_path.
  • Un parámetro path toma su valor primero de los datos resueltos del node, y en segundo lugar del cuerpo de la solicitud. Todo parámetro path necesita un valor.
  • Un parámetro query o header se resuelve igual, y se omite cuando no se encuentra ningún valor.
  • El cuerpo de la solicitud es lo que arma tu inputMapping. Escribe cada target exactamente como lo nombra el esquema de solicitud de la operación: no hay objeto envolvente ni prefijo que agregar. Trabajar con los datos de la solicitud y de la respuesta cubre los mapeos y las transformaciones por completo.
El node open-check envía POST https://api.acme-kyc.example.com/v1/checks con el cuerpo que armó su inputMapping. Su outputMapping extrae dos campos de la respuesta, así que el node siguiente lee ${open-check.checkId}.Un node que llama a GET /v1/checks/{checkId} lee el parámetro del mismo ámbito del node. Mapea un valor a checkId y Flowker lo sustituye en la ruta.
Un trigger de webhook puede validar el payload entrante contra una operación del mismo documento. Pon input_contract en "openapi" y dale al trigger openapi_schema_id, operation_path y operation_method — consulta Configurar un trigger de webhook.

Paso 5: Ejecútalo y confirma que funcionó


1

Activa el workflow

Llama a Activar un workflow. La activación registra la ruta de webhook y resuelve lo que referencia el contrato del trigger.
2

Ejecútalo

Llama a Ejecutar un workflow con una cabecera Idempotency-Key nueva, o envía una solicitud a la ruta de webhook.
3

Lee los resultados de los pasos

Un node que llegó a tu servicio registra la respuesta bajo su propio id. Con un outputMapping, los nombres mapeados quedan directamente bajo ese id — open-check.checkId. Sin outputMapping, la salida del node conserva el envoltorio de la respuesta, así que el cuerpo de la respuesta queda un nivel más abajo, bajo body.

Publicar una nueva versión de tu documento


Un documento almacenado no cambia. Para publicar una revisión, sube el archivo de nuevo con una version nueva; eso te da un segundo documento almacenado con su propio id. Nada cambia por sí solo. Toda referencia es por id, así que un workflow que ya está en marcha sigue llamando al documento que referencia. Para moverlo, envía el config de la configuración de provider con el nuevo openapi_schema_id mediante Actualizar una configuración de provider. config reemplaza el mapa almacenado en lugar de fusionarse con él, así que incluye base_url y auth en la misma llamada. Flowker revalida el nuevo id contra tu tenant, y responde FLK-0947 cuando no se resuelve. Consulta Listar los recursos que referencian un esquema OpenAPI sobre el documento anterior antes de retirarlo — nombra todo lo que todavía apunta hacia él.
Los servicios propios del catálogo de Flowker se resuelven contra un registro compartido de especificaciones publicadas, aparte. Tres operaciones lo gestionan. Nunca tocan un documento que subiste en el Paso 1. La fijación es por tenant. Publicar una versión no cambia nada para un tenant hasta que ese tenant la fija, así que una subida nueva nunca mueve un workflow en marcha a otra especificación. Flowker lee la versión que fijaste cuando informa los esquemas de los executors de ese servicio en el catálogo, así que Obtener un executor del catálogo describe la versión que elegiste.

Eliminar un documento


1

Comprueba qué se rompería

Listar los recursos que referencian un esquema OpenAPI devuelve dos grupos, providerConfigurations y workflows. Los dos están siempre presentes, y cada entrada lleva un id, un name y un status. Una entrada con estado activo bloquea el borrado; una inactiva solo avisa.
2

Elimínalo

Eliminar un esquema OpenAPI responde según lo que todavía referencia el documento:
Para levantar un bloqueo, deshabilita la configuración de provider con Deshabilitar configuración de provider, o mueve el workflow a draft con Mover el workflow a draft, y elimina el documento de nuevo.

Qué puede salir mal


Consulta la Lista de errores de Flowker para ver todos los códigos.

Qué sigue


Trabajar con los datos de la solicitud y de la respuesta

Mapea valores al cuerpo de la solicitud de la operación y lee su respuesta de vuelta.

Configurar un trigger de webhook

Valida un payload entrante contra una operación del mismo documento.

Guía de integración

Define la autenticación, los reintentos y el circuit breaker que comparte cada configuración de provider.

API de esquemas OpenAPI

Explora los endpoints del registro de esquemas.