# Správa FlowStreamov cez API Flow

> Prihláste sa, vypisujte, vytvárajte, importujte, exportujte, pozastavujte, reštartujte a odstraňujte FlowStreamy cez API JSON na /fapi/, čítajte štatistiky a premenné a volajte tok zvonka cez jeho adresu notify alebo vlastnú proxy cestu.

Framework: flow
Product: Flow (flow@11.1)
Language: sk
Content-SHA256: 325ab4ecf3954fa20eed155b9f43e8949df199462fd73dbb7f401fcf2b0d81ac
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: 
Review: not-recorded

Všetko, čo robí editor, ide cez jediný endpoint JSON: `POST /fapi/` s telom `{ "schema": "<name>", "data": { ... } }` (trasy API Total.js, pozri [trasy API](/en/total5/api-routes/)). Adresa `/fapi/` pochádza z riadka `$api : /fapi/` v súbore `config`. Každé volanie okrem prihlásenia potrebuje cookie relácie; bez nej je odpoveď `401: Unauthorized`.

Tieto volania sa pri písaní tejto stránky vyskúšali aj na lokálnom Flow 11.1 (Node.js 24 a `total5@0.0.19`).

## Prihlásenie

`Auth|login` prijíma `login` a `password` a odpovedá `{"success":true}` spolu s cookie relácie. Nesprávna dvojica odpovie `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>"}}'
```

Ďalšie volania používajú `-b cookie.txt`.

## Volania

| `schema` | `data` | Čo robí |
|---|---|---|
| `Streams` | žiadne | zoznam FlowStreamov s `id`, `name`, `group`, `author`, `version`, `proxypath`, `size` a živými `stats` bežiacich |
| `Streams\|save` | `name`, a voliteľne `author`, `version`, `icon`, `color`, `group`, `url`, `reference`, `readme`, `memory`, `cloning`, `proxypath`, `proxytimeout` | **vytvorí** tok, keď chýba `id` (kontroluje sa oprávnenie *create*), inak aktualizuje tok s týmto `id` a reštartuje ho |
| `Streams\|read` | `id` | vlastnosti jedného toku |
| `Streams\|raw` | `id` | celý objekt toku s jeho dizajnom |
| `Streams\|export` | `id` | tok ako text JSON v `value` bez interných polí (`unixsocket`, `env`, `import`, `worker`, `asfiles`) |
| `Streams\|import` | `data` (text JSON) | vytvorí **nový** tok z exportu (do 10 MB) s novým `id`; opakovaný `proxypath` sa nahradí náhodným; odpovie `{"success":true,"value":"<id>"}` |
| `Streams\|pause` | `id`, `is` (`true` alebo `false`) | pozastaví alebo obnoví bežiaci tok |
| `Streams\|restart` | `id` | reštartuje tok |
| `Streams\|remove` | `id` | odstráni tok a jeho priečinok (kontroluje sa oprávnenie *remove*) |
| `Streams\|stats` | žiadne | súčty inštalácie: verzie Node.js, Total.js a Flow, správy, čakajúce, pamäť a pripojenia |
| `Variables\|read` / `Variables\|save` | `id` (voliteľné), `data` | premenné jedného toku alebo **globálne** premenné, keď je `id` prázdne; uloženie ich odošle bežiacim tokom |
| `Console\|read` / `Console\|clear` | žiadne | konzola aplikácie |
| `CDN\|clear` | žiadne | vymaže vyrovnávaciu pamäť stiahnutých komponentov rozhrania |
| `Settings\|read` / `Settings\|save` | nastavenia (pozri [nastavenia a súbory](/en/flow/settings-and-files/)) | iba pre superadministrátora |

## Vytvorenie toku a jeho spustenie

Vytvorte ho a potom importujte dizajn vytvorený v editore (exportovaný súbor JSON), aby sa spustil:

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

Tok exportovaný z editora nesie svoj `design` (boxy a ich spojenia), svoje `components` (zdroj každého) a svoje `variables`.

## Pravidlá `proxypath`

Tok môže publikovať trasy HTTP pod vlastnou cestou. Flow pridá lomky (`demo` sa stane `/demo/`), odmietne cesty, ktoré patria samotnému Flow (`/`, `/cdn/`, `/fapi/`, `/private/`, `/flows/`, `/designer/`, `/parts/`, `/forms/`, `/css/`, `/js/`, `/fonts/`, `/panels/`) s `Proxy endpoint contains reserved path` a odmietne cestu, ktorú už používa iný tok. `proxytimeout` je čas v sekundách, ktorý sa čaká na odpoveď toku (predvolene `120`).

## Volania zvonka

| Trasa | Použitie |
|---|---|
| `GET` alebo `POST /notify/{id}/` | pošle oznámenie toku s týmto id (telo POST je obmedzené na 1 MB); komponenty toku rozhodnú, čo s ním urobia. Odpovie `{"success":true}` |
| `+SOCKET /{id}/` | WebSocket editora pre tento tok (vyžaduje reláciu) |
| `GET /private/?token=<token>` | vypíše súbory priečinka `private/`, keď token zodpovedá `token` v nastaveniach; desať nesprávnych tokenov zablokuje adresu na 15 minút |
| `+POST /update/` | aktualizuje aplikáciu zo súboru `.bundle`; iba pre zabalenú verziu |

Uchovajte `token` v tajnosti, tieto volania posielajte cez HTTPS a Flow dajte za reverzný proxy, keď je dostupný z internetu.
