# Oznámenia a verejné endpointy OpenPlatform

> Pošlite oznámenie používateľovi zo svojej aplikácie a použite API s tokenom na zoznam používateľov, nahrávanie obrázkov a synchronizačný socket viacerých inštancií.

Framework: openplatform
Product: OpenPlatform (openplatform@5)
Language: sk
Content-SHA256: ba1d5a3a5d4e9144df28f73dfa8cc57ffa5aa8caed415c64598ca55f5bfb57d5
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: 
Review: not-recorded

Okrem spustenia a overenia má OpenPlatform niekoľko endpointov pre aplikácie a iné systémy. Sú v `controllers/verify.js`, `controllers/api.js` a `controllers/socket.js`.

## Odoslanie oznámenia

Odpoveď overenia obsahuje `notify`, adresu tvaru `<platform url>/notify/?token=<checksum of user and application>`, keď používateľ prijíma oznámenia. Aplikácia na ňu pošle `POST` s hlavičkou `x-token` a telom JSON:

| Pole | Význam |
|---|---|
| `body` | text oznámenia |
| `path` | cesta v aplikácii, ktorú oznámenie otvorí |
| `icon`, `color` | voliteľné: nahradia ikonu a farbu aplikácie |

Hodnota `x-token` je **token oznámenia**, ktorý OpenPlatform odvodí pre daného používateľa a aplikáciu: MD5 adresy oznámenia so soľou `reqtoken` aplikácie a MD5 tohto výsledku so soľou jej `restoken` (`FUNC.makenotify` v `definitions/func.js`). Obe tajomstvá sú tie isté, ktoré aplikácia zdieľa pre spustenie ([registrácia aplikácie](/en/openplatform/register-an-app/)).

OpenPlatform odpovie `Invalid token`, keď sa kontrolný súčet alebo hlavička nezhodujú, a `Not allowed notifications`, keď ich používateľ alebo aplikácia neprijíma. Kontroluje aj povolené adresy aplikácie a že používateľ je potvrdený, povolený a aktívny. Keď je všetko v poriadku:

1. uloží oznámenie (tabuľka `tbl_notification`) a zvýši počítadlo neprečítaných používateľa;
2. aktualizuje relácie tohto používateľa otvorené v portáli, takže počítadlo sa objaví okamžite;
3. publikuje `Notifications.create` cez TMS, keď je zapnuté nastavenie `$tms`;
4. vráti identifikátor oznámenia.

Pre používateľov, ktorí sú offline a majú neprečítané oznámenia, servisná úloha pošle **e-mailový súhrn** ("Unread notifications"), keď je nastavená pošta, najviac raz za tri dni na používateľa (`definitions/init.js`).

## API používateľov (token)

`GET /users/` vráti skupiny a používateľov platformy ako JSON. Je **vypnuté**, kým nie sú nastavené `allow_token` a `token`. Volajúci pošle token ako parameter dotazu `token` alebo ako hlavičku `x-token`; opakované nesprávne pokusy sa blokujú. Používatelia prichádzajú bez tajomstiev: identifikátor, referencia, jazyk, pohlavie, fotografia (absolútna adresa), meno, e-mail, farba, preferencie, príznaky (`sa`, `isdisabled`, `isinactive`, `isonline`), dátumy a id ich skupín.

## Nahratie obrázka

`POST /upload/base64/` (do 2 MB) prijíma telo JSON s názvom súboru a `file` ako data URI, a iba **JPEG**. Vyžaduje prihláseného používateľa alebo token dotazu z nastavenia `servicetoken` (odkiaľ ten kľúč pochádza, pozri [nastavenia a databáza](/en/openplatform/settings-and-database/)). Obrázok sa uloží do úložiska súborov `files` a odpoveďou je jeho adresa, `/files/<id and checksum>.jpg`; adresa funguje iba s kontrolným súčtom.

## Viac inštancií: synchronizačný socket

`SOCKET /sync/` spája inštancie OpenPlatform. Klient sa prijme, keď je zapnuté nastavenie `sync` a `token` v dotaze sa rovná `sync_token`; každý iný klient sa pol sekundy po otvorení zatvorí s kódom `4001`. Správy potvrdeného klienta sa prenášajú ostatným a kým sa potvrdený klient znovu pripája, správy sa zaraďujú do fronty až na desať sekúnd.
