ForgeFlow
pl

Flow

Zarządzanie FlowStreamami przez API Flow

Flow · flow@11.1 flowflowstreamapiimportexportnotify

Wszystko, co robi edytor, przechodzi przez jeden endpoint JSON: POST /fapi/ z treścią { "schema": "<name>", "data": { ... } } (trasy API Total.js, zobacz trasy API). Adres /fapi/ pochodzi z wiersza $api : /fapi/ pliku config. Każde wywołanie poza logowaniem wymaga ciasteczka sesji; bez niego odpowiedzią jest 401: Unauthorized.

Te wywołania wypróbowano także na lokalnym Flow 11.1 (Node.js 24 i total5@0.0.19) podczas pisania tej strony.

Logowanie

Auth|login przyjmuje login i password i odpowiada {"success":true} wraz z ciasteczkiem sesji. Błędna para odpowiada 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>"}}'

Kolejne wywołania używają -b cookie.txt.

Wywołania

schemadataCo robi
Streamsbraklista FlowStreamów z id, name, group, author, version, proxypath, size i bieżącymi stats uruchomionych
Streams\savename, i opcjonalnie author, version, icon, color, group, url, reference, readme, memory, cloning, proxypath, proxytimeouttworzy przepływ, gdy brakuje id (sprawdzane jest uprawnienie create), w przeciwnym razie aktualizuje przepływ o tym id i restartuje go
Streams\readidwłaściwości jednego przepływu
Streams\rawidcały obiekt przepływu wraz z projektem
Streams\exportidprzepływ jako tekst JSON w value, bez pól wewnętrznych (unixsocket, env, import, worker, asfiles)
Streams\importdata (tekst JSON)tworzy nowy przepływ z eksportu (do 10 MB) z nowym id; powtórzony proxypath jest zastępowany losowym; odpowiada {"success":true,"value":"<id>"}
Streams\pauseid, is (true lub false)wstrzymuje lub wznawia działający przepływ
Streams\restartidrestartuje przepływ
Streams\removeidusuwa przepływ i jego folder (sprawdzane jest uprawnienie remove)
Streams\statsbraksumy instalacji: wersje Node.js, Total.js i Flow, wiadomości, oczekujące, pamięć i połączenia
Variables\read / Variables\saveid (opcjonalne), datazmienne jednego przepływu albo zmienne globalne, gdy id jest puste; zapis wysyła je do działających przepływów
Console\read / Console\clearbrakkonsola aplikacji
CDN\clearbrakczyści pamięć podręczną pobranych komponentów interfejsu
Settings\read / Settings\saveustawienia (zobacz ustawienia i pliki)tylko dla superadministratora

Utworzenie przepływu i jego uruchomienie

Utwórz go, a potem zaimportuj projekt zbudowany w edytorze (wyeksportowany plik JSON), aby go uruchomić:

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

Przepływ wyeksportowany z edytora niesie swój design (pola i ich połączenia), swoje components (źródło każdego z nich) i swoje variables.

Zasady proxypath

Przepływ może publikować trasy HTTP pod własną ścieżką. Flow dodaje ukośniki (demo staje się /demo/), odrzuca ścieżki należące do samego Flow (/, /cdn/, /fapi/, /private/, /flows/, /designer/, /parts/, /forms/, /css/, /js/, /fonts/, /panels/) komunikatem Proxy endpoint contains reserved path i odrzuca ścieżkę, której używa już inny przepływ. proxytimeout to czas w sekundach oczekiwania na odpowiedź przepływu (domyślnie 120).

Wywołania z zewnątrz

TrasaZastosowanie
GET lub POST /notify/{id}/wysyła powiadomienie do przepływu o tym id (treść POST ograniczona do 1 MB); komponenty przepływu decydują, co z nim zrobić. Odpowiada {"success":true}
+SOCKET /{id}/WebSocket edytora dla tego przepływu (wymaga sesji)
GET /private/?token=<token>wyświetla pliki folderu private/, gdy token jest równy token z ustawień; dziesięć błędnych tokenów blokuje adres na 15 minut
+POST /update/aktualizuje aplikację z pliku .bundle; tylko dla wersji spakowanej

Zachowaj token w tajemnicy, wysyłaj te wywołania przez HTTPS i umieść Flow za odwrotnym proxy, gdy jest dostępny z Internetu.