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_BUCKETguarda los documentos OpenAPI que subes — consulta Variables de entorno de Flowker. - Un workflow en estado
draftpara editar. Un workflow activo queda bloqueado. Primero desactívalo y luego mueve el workflow inactivo adraftantes de editarlo y activarlo de nuevo.
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 para el cuerpo application/json de la operación y outputSchema para su primera respuesta 2xx application/json. Cada campo falta cuando el documento no declara ese esquema. Para un cuerpo no JSON, usa hasBody, bodyRequired y bodyContentType. 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 deconfig.auth es de solo escritura al crear y actualizar. Flowker lo envía a tu backend de secretos, lo elimina del documento de configuración antes de guardarlo y lo resuelve desde el backend en el momento de la ejecución. Para una configuración external_openapi, la lectura por id no resuelve ni devuelve los valores secretos de config.auth. Guarda las credenciales en config.auth; una lectura puede devolver otros valores de configuración.
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. No anula allowedHosts: cuando allowedHosts no está vacía, también debe incluir el host privado. Una entrada coincidente en allowedPrivateHosts solo levanta el bloqueo de IP privada o loopback; las direcciones de metadatos de nube y link-local siguen bloqueadas.
Vincula el documento
Agrega una entradaschemaBindings 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 delimita el vínculo almacenado y se valida contra el documento al guardar la configuración. No verifica qué llaman los nodes del workflow ni limita un node external_openapi durante la ejecución; el node usa config.openapi_schema_id, operation_path y operation_method.
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.
Ejemplo de solicitud
Ejemplo de solicitud
id de la nueva configuración. Guárdalo — el Paso 4 lo pone en el providerConfigId de cada node que llama a este servicio.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. Flowker no llama a tu API de destino aquí. Sí lee el documento referenciado y, cuando config.auth contiene un secreto, escribe ese secreto en el backend de secretos configurado antes de persistir la configuración.
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. La ruta de guardado puede persistir un node sin alguno de los campos de operación, pero la ejecución falla entonces con FLK-0950 antes de que Flowker envíe una solicitud. 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_urlcuando la configuración lo define, y en su defecto la primera entradaserversutilizable del documento, unida conoperation_path. - Un parámetro
pathtoma su valor primero de los datos resueltos del node, y en segundo lugar del cuerpo de la solicitud. Todo parámetropathnecesita un valor. - Un parámetro
queryoheaderse resuelve igual, y se omite cuando no se encuentra ningún valor. - El cuerpo de la solicitud con el
request_formatpredeterminado (json) es lo que armainputMapping.xml_convertedserializa ese objeto mapeado como XML;xml_passthroughignora el mapeo y reenvía los bytes XML originales del trigger de webhook. Escribe cadatargetexactamente 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.
Ejemplo — un workflow que llama a dos operaciones del documento
Ejemplo — un workflow que llama a dos operaciones del documento
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.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.
Subir un documento nuevo no cambia las configuraciones existentes. Sin embargo, cada node executor lee su configuración de provider al ejecutarse. Actualizar config.openapi_schema_id puede cambiar el documento que usan nodes posteriores de una ejecución en curso; coordina el cambio. Envía el config de la configuración de provider con el nuevo id mediante Actualizar una configuración de provider. config reemplaza el mapa almacenado en lugar de fusionarse con él, así que incluye en la misma llamada los valores configurados de base_url y auth que necesitas conservar. 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. La respuesta es una lista de visualización, no un inventario completo: devuelve hasta 100 entradas en cada uno de sus dos grupos. Una configuración de provider activa más allá de ese límite mostrado todavía bloquea el borrado.
Versiones de especificación de los servicios del catálogo
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, cada uno lleva hasta 100 entradas y cada entrada lleva un id, un name y un status. Es una lista de visualización, no un inventario completo: una configuración de provider activa más allá del límite mostrado todavía bloquea el borrado, mientras que una entrada inactiva solo avisa.2
Elimínalo
Eliminar un esquema OpenAPI responde según lo que todavía referencia el documento:
draft solo si necesitas editarlo.
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.

