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, así que llama primero a Mover el workflow a draft y actívalo de nuevo después.
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 deconfig.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 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 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.
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. 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_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 es lo que arma tu
inputMapping. 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.
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.
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, 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:
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.

