ForgeFlow
es

Flow

Gestionar FlowStreams con la API de Flow

Flow · flow@11.1 flowflowstreamapiimportexportnotify

Todo lo que hace el editor pasa por un único endpoint JSON: POST /fapi/ con el cuerpo { "schema": "<name>", "data": { ... } } (las rutas API de Total.js, consulta rutas API). La dirección /fapi/ sale de la línea $api : /fapi/ del archivo config. Todas las llamadas salvo el inicio de sesión necesitan la cookie de sesión; sin ella la respuesta es 401: Unauthorized.

Estas llamadas también se probaron contra un Flow 11.1 local (Node.js 24 y total5@0.0.19) mientras se escribía esta página.

Iniciar sesión

Auth|login recibe login y password y responde {"success":true} con la cookie de sesión. Un par incorrecto responde Invalid credentials.

curl -c cookie.txt -X POST http://localhost:8000/fapi/ \
  -H 'content-type: application/json' \
  -d '{"schema":"Auth|login","data":{"login":"<your login>","password":"<your password>"}}'

Las siguientes llamadas usan -b cookie.txt.

Las llamadas

schemadataQué hace
Streamsningunola lista de FlowStreams con id, name, group, author, version, proxypath, size y las stats en vivo de los que se están ejecutando
Streams\savename, y opcionalmente author, version, icon, color, group, url, reference, readme, memory, cloning, proxypath, proxytimeoutcrea un flujo cuando falta id (se comprueba el permiso create); si no, actualiza el flujo con ese id y lo reinicia
Streams\readidlas propiedades de un flujo
Streams\rawidel objeto completo del flujo, con su diseño
Streams\exportidel flujo como texto JSON en value, sin los campos internos (unixsocket, env, import, worker, asfiles)
Streams\importdata (el texto JSON)crea un flujo nuevo a partir de una exportación (hasta 10 MB), con un id nuevo; un proxypath repetido se sustituye por uno aleatorio; responde {"success":true,"value":"<id>"}
Streams\pauseid, is (true o false)pausa o reanuda un flujo en ejecución
Streams\restartidreinicia el flujo
Streams\removeidelimina el flujo y su carpeta (se comprueba el permiso remove)
Streams\statsningunolos totales de la instalación: versiones de Node.js, Total.js y Flow, mensajes, pendientes, memoria y conexiones
Variables\read / Variables\saveid (opcional), datalas variables de un flujo, o las variables globales cuando id está vacío; al guardar se envían a los flujos en ejecución
Console\read / Console\clearningunola consola de la aplicación
CDN\clearningunoborra la caché de los componentes de la interfaz descargados
Settings\read / Settings\savelos ajustes (consulta ajustes y archivos)solo para el superadministrador

Crear un flujo y ejecutarlo

Créalo y luego importa un diseño construido en el editor (un archivo JSON exportado) para iniciarlo:

curl -b cookie.txt -X POST http://localhost:8000/fapi/ \
  -H 'content-type: application/json' \
  -d '{"schema":"Streams|save","data":{"name":"Demo","author":"Me"}}'

Un flujo exportado desde el editor lleva su design (las cajas y sus conexiones), sus components (el código de cada una) y sus variables.

Reglas de proxypath

Un flujo puede publicar rutas HTTP bajo una ruta propia. Flow añade las barras (demo pasa a ser /demo/), rechaza las rutas que pertenecen a Flow (/, /cdn/, /fapi/, /private/, /flows/, /designer/, /parts/, /forms/, /css/, /js/, /fonts/, /panels/) con Proxy endpoint contains reserved path y rechaza una ruta que ya use otro flujo. proxytimeout es el tiempo en segundos que se espera la respuesta del flujo (por defecto 120).

Llamadas desde fuera

RutaUso
GET o POST /notify/{id}/envía una notificación al flujo con ese id (el cuerpo del POST está limitado a 1 MB); los componentes del flujo deciden qué hacer con ella. Responde {"success":true}
+SOCKET /{id}/el WebSocket del editor para ese flujo (necesita la sesión)
GET /private/?token=<token>lista los archivos de la carpeta private/ cuando el token coincide con el token de los ajustes; diez tokens erróneos bloquean una dirección durante 15 minutos
+POST /update/actualiza la aplicación desde un archivo .bundle; solo para la versión empaquetada

Mantén el token en secreto, envía estas llamadas por HTTPS y pon Flow detrás de un proxy inverso cuando sea accesible desde Internet.