Gestionarea FlowStreams cu API-ul Flow
Tot ce face editorul trece printr-un singur endpoint JSON: POST /fapi/ cu corpul { "schema": "<name>", "data": { ... } } (rutele API Total.js, vezi rutele API). Adresa /fapi/ vine din linia $api : /fapi/ a fișierului config. Fiecare apel în afară de autentificare are nevoie de cookie-ul de sesiune; fără el răspunsul este 401: Unauthorized.
Aceste apeluri au fost încercate și pe un Flow 11.1 local (Node.js 24 și total5@0.0.19) în timp ce se scria această pagină.
Autentificare
Auth|login primește login și password și răspunde {"success":true} cu cookie-ul de sesiune. O pereche greșită răspunde 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>"}}'Apelurile următoare folosesc -b cookie.txt.
Apelurile
schema | data | Ce face | ||
|---|---|---|---|---|
Streams | niciunul | lista FlowStreams cu id, name, group, author, version, proxypath, size și stats în timp real ale celor care rulează | ||
Streams\ | save | name, și opțional author, version, icon, color, group, url, reference, readme, memory, cloning, proxypath, proxytimeout | creează un flux când lipsește id (se verifică permisiunea create); altfel actualizează fluxul cu acel id și îl repornește | |
Streams\ | read | id | proprietățile unui flux | |
Streams\ | raw | id | întregul obiect al fluxului, cu designul său | |
Streams\ | export | id | fluxul ca text JSON în value, fără câmpurile interne (unixsocket, env, import, worker, asfiles) | |
Streams\ | import | data (textul JSON) | creează un flux nou dintr-un export (până la 10 MB), cu un id nou; un proxypath repetat este înlocuit cu unul aleatoriu; răspunde {"success":true,"value":"<id>"} | |
Streams\ | pause | id, is (true sau false) | pune pe pauză sau reia un flux care rulează | |
Streams\ | restart | id | repornește fluxul | |
Streams\ | remove | id | elimină fluxul și folderul lui (se verifică permisiunea remove) | |
Streams\ | stats | niciunul | totalurile instalației: versiunile Node.js, Total.js și Flow, mesaje, în așteptare, memorie și conexiuni | |
Variables\ | read / Variables\ | save | id (opțional), data | variabilele unui flux sau variabilele globale când id este gol; salvarea le trimite fluxurilor care rulează |
Console\ | read / Console\ | clear | niciunul | consola aplicației |
CDN\ | clear | niciunul | golește cache-ul componentelor de interfață descărcate | |
Settings\ | read / Settings\ | save | setările (vezi setări și fișiere) | doar pentru super-administrator |
Crearea unui flux și rularea lui
Creează-l, apoi importă un design construit în editor (un fișier JSON exportat) pentru a-l porni:
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 exportat din editor poartă design (casetele și conexiunile lor), components (sursa fiecăreia) și variables.
Regulile proxypath
Un flux poate publica rute HTTP sub o cale proprie. Flow adaugă barele oblice (demo devine /demo/), respinge căile care aparțin lui Flow însuși (/, /cdn/, /fapi/, /private/, /flows/, /designer/, /parts/, /forms/, /css/, /js/, /fonts/, /panels/) cu Proxy endpoint contains reserved path și respinge o cale pe care o folosește deja alt flux. proxytimeout este timpul în secunde de așteptare a răspunsului fluxului (implicit 120).
Apeluri din exterior
| Ruta | Utilizare |
|---|---|
GET sau POST /notify/{id}/ | trimite o notificare fluxului cu acel id (corpul POST este limitat la 1 MB); componentele fluxului decid ce fac cu ea. Răspunde {"success":true} |
+SOCKET /{id}/ | WebSocket-ul editorului pentru acel flux (are nevoie de sesiune) |
GET /private/?token=<token> | listează fișierele din folderul private/ când token-ul este egal cu token din setări; zece token-uri greșite blochează o adresă timp de 15 minute |
+POST /update/ | actualizează aplicația dintr-un fișier .bundle; doar pentru versiunea împachetată |
Păstrează token secret, trimite aceste apeluri prin HTTPS și pune Flow în spatele unui proxy invers când este accesibil de pe Internet.