ForgeFlow
fr

Flow

Gérer les FlowStreams avec l’API de Flow

Flow · flow@11.1 flowflowstreamapiimportexportnotify

Tout ce que fait l’éditeur passe par un seul point d’accès JSON : POST /fapi/ avec le corps { "schema": "<name>", "data": { ... } } (les routes API de Total.js, voir routes API). L’adresse /fapi/ vient de la ligne $api : /fapi/ du fichier config. Tous les appels sauf la connexion ont besoin du cookie de session ; sans lui la réponse est 401: Unauthorized.

Ces appels ont aussi été essayés contre un Flow 11.1 local (Node.js 24 et total5@0.0.19) pendant la rédaction de cette page.

Se connecter

Auth|login prend login et password et répond {"success":true} avec le cookie de session. Un mauvais couple répond 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>"}}'

Les appels suivants utilisent -b cookie.txt.

Les appels

schemadataCe qu’il fait
Streamsaucunela liste des FlowStreams avec id, name, group, author, version, proxypath, size et les stats en direct de ceux qui tournent
Streams\savename, et éventuellement author, version, icon, color, group, url, reference, readme, memory, cloning, proxypath, proxytimeoutcrée un flux quand id manque (la permission create est vérifiée), sinon met à jour le flux portant cet id et le redémarre
Streams\readidles propriétés d’un flux
Streams\rawidl’objet complet du flux, avec son design
Streams\exportidle flux sous forme de texte JSON dans value, sans les champs internes (unixsocket, env, import, worker, asfiles)
Streams\importdata (le texte JSON)crée un nouveau flux à partir d’un export (jusqu’à 10 Mo), avec un nouvel id ; un proxypath répété est remplacé par un chemin aléatoire ; répond {"success":true,"value":"<id>"}
Streams\pauseid, is (true ou false)met en pause ou reprend un flux en cours
Streams\restartidredémarre le flux
Streams\removeidsupprime le flux et son dossier (la permission remove est vérifiée)
Streams\statsaucuneles totaux de l’installation : versions de Node.js, Total.js et Flow, messages, en attente, mémoire et connexions
Variables\read / Variables\saveid (facultatif), datales variables d’un flux, ou les variables globales quand id est vide ; l’enregistrement les pousse vers les flux en cours
Console\read / Console\clearaucunela console de l’application
CDN\clearaucunevide le cache des composants d’interface téléchargés
Settings\read / Settings\saveles réglages (voir réglages et fichiers)uniquement pour le super-administrateur

Créer un flux et l’exécuter

Créez-le, puis importez un design construit dans l’éditeur (un fichier JSON exporté) pour le démarrer :

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 flux exporté depuis l’éditeur contient son design (les boîtes et leurs connexions), ses components (le source de chacun) et ses variables.

Règles de proxypath

Un flux peut publier des routes HTTP sous un chemin qui lui est propre. Flow ajoute les barres obliques (demo devient /demo/), rejette les chemins qui appartiennent à Flow lui-même (/, /cdn/, /fapi/, /private/, /flows/, /designer/, /parts/, /forms/, /css/, /js/, /fonts/, /panels/) avec Proxy endpoint contains reserved path, et rejette un chemin déjà utilisé par un autre flux. proxytimeout est le temps en secondes à attendre pour la réponse du flux (par défaut 120).

Appels depuis l’extérieur

RouteUsage
GET ou POST /notify/{id}/envoie une notification au flux portant cet id (le corps du POST est limité à 1 Mo) ; les composants du flux décident quoi en faire. Répond {"success":true}
+SOCKET /{id}/le WebSocket de l’éditeur pour ce flux (il faut la session)
GET /private/?token=<token>liste les fichiers du dossier private/ quand le jeton est égal au token des réglages ; dix mauvais jetons bloquent une adresse pendant 15 minutes
+POST /update/met à jour l’application à partir d’un fichier .bundle ; uniquement pour la version empaquetée

Gardez le token secret, envoyez ces appels en HTTPS et placez Flow derrière un proxy inverse quand il est accessible depuis Internet.