# FlowStreamek kezelése a Flow API-val

> Jelentkezz be, listázz, hozz létre, importálj, exportálj, szüneteltess, indíts újra és távolíts el FlowStreameket a /fapi/ címen elérhető JSON API-val, olvasd a statisztikákat és a változókat, és hívj meg egy folyamot kívülről a notify címével vagy a saját proxy útvonalával.

Framework: flow
Product: Flow (flow@11.1)
Language: hu
Content-SHA256: 9ece38d60d5a34d99e9bf3bb0696ec59fa4f6c1136756ff06d6dbdbab88da022
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: 
Review: not-recorded

Minden, amit a szerkesztő csinál, egyetlen JSON végponton megy át: `POST /fapi/` a következő törzzsel: `{ "schema": "<name>", "data": { ... } }` (a Total.js API útvonalai, lásd [API útvonalak](/en/total5/api-routes/)). A `/fapi/` cím a `config` fájl `$api : /fapi/` sorából jön. A bejelentkezés kivételével minden hívás igényli a munkamenet-cookie-t; nélküle a válasz `401: Unauthorized`.

Ezeket a hívásokat az oldal írása közben egy helyi Flow 11.1-gyel (Node.js 24 és `total5@0.0.19`) is kipróbáltuk.

## Bejelentkezés

Az `Auth|login` a `login` és `password` mezőt kapja, és `{"success":true}` választ ad a munkamenet-cookie-val. Hibás páros esetén a válasz `Invalid credentials`.

```bash
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>"}}'
```

A következő hívások a `-b cookie.txt` kapcsolót használják.

## A hívások

| `schema` | `data` | Mit csinál |
|---|---|---|
| `Streams` | nincs | a FlowStreamek listája az `id`, `name`, `group`, `author`, `version`, `proxypath`, `size` mezőkkel és a futók élő `stats` adataival |
| `Streams\|save` | `name`, és opcionálisan `author`, `version`, `icon`, `color`, `group`, `url`, `reference`, `readme`, `memory`, `cloning`, `proxypath`, `proxytimeout` | **létrehoz** egy folyamot, ha hiányzik az `id` (a *create* jogosultságot ellenőrzi), egyébként frissíti az adott `id` folyamot és újraindítja |
| `Streams\|read` | `id` | egy folyam tulajdonságai |
| `Streams\|raw` | `id` | a teljes folyamobjektum a tervével együtt |
| `Streams\|export` | `id` | a folyam JSON szövegként a `value` mezőben, a belső mezők nélkül (`unixsocket`, `env`, `import`, `worker`, `asfiles`) |
| `Streams\|import` | `data` (a JSON szöveg) | egy exportból **új** folyamot hoz létre (legfeljebb 10 MB), új `id`-vel; az ismétlődő `proxypath` helyére véletlenszerű kerül; válasza `{"success":true,"value":"<id>"}` |
| `Streams\|pause` | `id`, `is` (`true` vagy `false`) | szünetelteti vagy folytatja a futó folyamot |
| `Streams\|restart` | `id` | újraindítja a folyamot |
| `Streams\|remove` | `id` | eltávolítja a folyamot és a mappáját (a *remove* jogosultságot ellenőrzi) |
| `Streams\|stats` | nincs | a telepítés összesítői: a Node.js, a Total.js és a Flow verziói, üzenetek, függőben lévők, memória és kapcsolatok |
| `Variables\|read` / `Variables\|save` | `id` (opcionális), `data` | egy folyam változói, vagy a **globális** változók, ha az `id` üres; a mentés elküldi őket a futó folyamoknak |
| `Console\|read` / `Console\|clear` | nincs | az alkalmazás konzolja |
| `CDN\|clear` | nincs | törli a letöltött felületi komponensek gyorsítótárát |
| `Settings\|read` / `Settings\|save` | a beállítások (lásd [beállítások és fájlok](/en/flow/settings-and-files/)) | csak a szuperadminisztrátornak |

## Folyam létrehozása és futtatása

Hozd létre, majd importálj egy a szerkesztőben épített tervet (egy exportált JSON fájlt), hogy elinduljon:

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

A szerkesztőből exportált folyam magával viszi a `design` (a dobozok és kapcsolataik), a `components` (mindegyik forrása) és a `variables` részt.

## A `proxypath` szabályai

Egy folyam HTTP útvonalakat tehet közzé saját útvonal alatt. A Flow hozzáteszi a törtvonalakat (a `demo` `/demo/` lesz), visszautasítja a magához a Flow-hoz tartozó útvonalakat (`/`, `/cdn/`, `/fapi/`, `/private/`, `/flows/`, `/designer/`, `/parts/`, `/forms/`, `/css/`, `/js/`, `/fonts/`, `/panels/`) a `Proxy endpoint contains reserved path` üzenettel, és visszautasít egy olyan útvonalat, amelyet másik folyam már használ. A `proxytimeout` a folyam válaszára várt idő másodpercben (alapértelmezés: `120`).

## Hívások kívülről

| Útvonal | Használat |
|---|---|
| `GET` vagy `POST /notify/{id}/` | értesítést küld az adott id-jú folyamnak (a POST törzs legfeljebb 1 MB); a folyam komponensei döntik el, mit kezdenek vele. Válasza `{"success":true}` |
| `+SOCKET /{id}/` | a szerkesztő WebSocketje az adott folyamhoz (munkamenet kell hozzá) |
| `GET /private/?token=<token>` | listázza a `private/` mappa fájljait, ha a token megegyezik a beállítások `token` értékével; tíz hibás token 15 percre letilt egy címet |
| `+POST /update/` | frissíti az alkalmazást egy `.bundle` fájlból; csak a csomagolt verziónál |

Tartsd titokban a `token` értékét, ezeket a hívásokat HTTPS-en küldd, és tedd a Flow-t fordított proxy mögé, ha az internetről elérhető.
