Antes de empezar
- El documento OpenAPI 3.x de tu servicio como archivo, de como máximo 8 MiB, 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 está bloqueado. Desactívalo primero, 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 referencian todos los pasos posteriores.Con qué se identifica un documento almacenado
name y version los eliges tú, de 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. Todo lo demás referencia ese id, 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 uno que no declara ninguna operación, responde FLK-0900. Un archivo de más de 8 MiB responde FLK-0901.
Los documentos que subes son solo tuyos. Un documento es visible solo para el tenant que lo subió, y un id de otro tenant nunca se resuelve.
Paso 2: Lee las operaciones a las 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 lleva nextCursor y hasMore.2
Lee 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 nodo.3
Lee los nombres de campo de una operación
Derivar el esquema de una operación toma un
path y un method y devuelve inputSchema para el cuerpo de solicitud application/json de la operación y outputSchema para su primera respuesta application/json 2xx. Cualquiera de los dos campos falta cuando el documento no declara ese esquema. Para un cuerpo de solicitud que no es 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 destinos y orígenes de mapeo en el Paso 4. Ambos parámetros de query string son obligatorios, y method no distingue mayúsculas de minúsculas y debe ser uno de GET, PUT, POST, DELETE, OPTIONS, HEAD, PATCH o TRACE. Un path faltante o un method no reconocido responde FLK-0304. Un path y un método que el documento no declara responden FLK-0902.Paso 3: Apunta una configuración de proveedor al documento
Llama a Crear una configuración de proveedor con
kind definido como external_openapi. Ese kind referencia el documento que subiste en lugar de un proveedor del catálogo.
Dónde va la credencial
El secreto dentro deconfig.auth es de solo escritura en la creación y en la actualización. Flowker lo envía a tu backend de secretos y lo quita del documento de configuración antes de guardar el documento. Flowker resuelve el secreto 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. Mantén las credenciales en config.auth. Una lectura puede devolver otros valores de configuración.
Para rotar un secreto más adelante, envía el valor nuevo en una actualización. Para conservar el actual, omite el campo o envíalo vacío mientras auth.type siga siendo el mismo. Consulta Autenticación.
Dónde se definen las listas de hosts permitidos
Ambas listas de permitidos pertenecen a esta llamada de creación, y después a Actualizar una configuración de proveedor. La listaallowedHosts nombra los hosts a los que puede llegar cada nodo que llama a través de esta configuración. Flowker compara con 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 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 complementaria para un servicio que vive en una red privada. No anula a allowedHosts: cuando allowedHosts no está vacía, también debe incluir el host privado. Una entrada allowedPrivateHosts que coincide solo levanta el bloqueo de IP privada o de 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. Define type como "openapi" y schemaId como el mismo id que pusiste en config.openapi_schema_id. El array operations opcional acota el vínculo almacenado. Flowker valida ese array contra el documento cuando guardas la configuración.
Ese array no verifica a qué llaman los nodos del workflow, y no limita un nodo external_openapi en el momento de la ejecución. El nodo usa config.openapi_schema_id, operation_path y operation_method.
El vínculo es lo que hace visibles a los dependientes del documento. Con él, Listar recursos que referencian un esquema OpenAPI informa esta configuración, y una eliminación 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 operations que el documento no declara responde FLK-0943, y cada uno nombra la entrada que falla. Una entrada malformada responde FLK-0293. Malformada significa un type desconocido, un schemaId que no es un UUID, operations en un vínculo que no es openapi, o una operación sin path ni método.
Solicitud de ejemplo
Solicitud de ejemplo
id de la configuración nueva. Guárdalo. El Paso 4 lo pone en el providerConfigId de cada nodo que llama a este servicio.config sin openapi_schema_id, o uno 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. Un bloque config.headers malformado responde FLK-0955.
Flowker no llama aquí a tu API de destino. 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: Apunta a una operación desde un nodo de workflow
Un nodo ejecutor 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 nodo así. Flowker resuelve la configuración de proveedor, reconoce el kind y completa el campo por ti antes de validar el workflow. El guardado puede persistir un nodo al que le falte cualquiera de los dos 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 nodo se comportan como describe Referenciar la configuración de proveedor desde un nodo 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 si no, la primera entradaserversutilizable del documento, unida conoperation_path. - Un parámetro
pathtoma su valor primero de los datos resueltos del nodo, y en segundo lugar del cuerpo de solicitud. Cada parámetropathnecesita un valor. - Un parámetro
queryoheaderse resuelve de la misma forma. Un parámetro opcional sin valor se deja fuera. Un parámetro obligatorio sin valor hace fallar el nodo antes de que salga ninguna solicitud de Flowker, conFLK-0954. Un valor estático deconfig.headerso la autenticación configurada pueden satisfacer un parámetro de header obligatorio. - El cuerpo de solicitud con el
request_formatpredeterminado (json) es lo que arma tuinputMapping. Conxml_converted, Flowker serializa ese objeto mapeado como XML. Conxml_passthrough, Flowker ignora el mapeo y reenvía los bytes XML originales del disparador de webhook. Escribe cadatargetexactamente como lo nombra el esquema de solicitud de la operación. No hay objeto envoltorio ni prefijo que agregar. Trabajar con datos de solicitud y 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 nodo siguiente lee ${open-check.checkId}.Un nodo que en cambio llama a GET /v1/checks/{checkId} lee el parámetro del mismo ámbito de nodo. Mapea un valor sobre checkId, y Flowker lo sustituye en el path.Paso 5: Ejecútalo y confirma que funcionó
1
Activa el workflow
Llama a Activar un workflow. La activación registra la ruta del webhook y resuelve lo que referencia el contrato del disparador.
2
Ejecútalo
Llama a Ejecutar un workflow con un header
Idempotency-Key nuevo, o envía una solicitud a la ruta del webhook.3
Lee los resultados por paso
Un nodo que alcanzó 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 nodo conserva el envelope de la respuesta, así que el cuerpo de la respuesta queda un nivel más abajo, bajo body.Publicar una versión nueva de tu documento
Un documento almacenado no cambia. Para entregar 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 nodo ejecutor lee su configuración de proveedor cuando corre. Actualizar config.openapi_schema_id puede cambiar el documento que usan los nodos posteriores de una ejecución en curso, así que coordina el cambio.
Envía el config de la configuración de proveedor con el id nuevo mediante Actualizar una configuración de proveedor. El campo config reemplaza el mapa almacenado en lugar de fusionarse con él. Incluye en la misma llamada los valores base_url y auth configurados que necesites conservar. Flowker revalida el id nuevo contra tu tenant, y responde FLK-0947 cuando no se resuelve.
Revisa Listar recursos que referencian un esquema OpenAPI sobre el documento anterior antes de retirarlo. La respuesta es una lista para mostrar, no un inventario completo: devuelve hasta 100 entradas en cada uno de sus dos grupos. Una configuración de proveedor activa más allá de ese límite de visualización igual bloquea la eliminación.
Versiones de spec para los servicios del catálogo
Los servicios del propio catálogo de Flowker se resuelven contra un registro compartido y separado de specs publicadas. 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. Por eso una subida nueva nunca mueve un workflow en ejecución a una spec distinta. Flowker lee tu versión fijada cuando informa los esquemas de ejecutor de ese servicio en el catálogo, así que Obtener un ejecutor del catálogo describe la versión que elegiste.
Eliminar un documento
1
Revisa qué se rompería
Listar 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 para mostrar, no un inventario completo. Una configuración de proveedor activa más allá del límite de visualización igual bloquea la eliminación, mientras que una entrada inactiva solo advierte.2
Elimínalo
Eliminar un esquema OpenAPI responde según lo que todavía referencia el documento:
draft solo si necesitas editarlo.
Qué sale mal
Consulta la lista de errores de Flowker para ver todos los códigos.
Qué sigue
Trabajar con datos de solicitud y respuesta
Mapea valores hacia el cuerpo de solicitud de la operación y lee de vuelta su respuesta.
Configurar un disparador 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 proveedor.
API de esquemas OpenAPI
Explora los endpoints del registro de esquemas.

