# Oznámení a veřejné endpointy OpenPlatform

> Pošlete oznámení uživateli ze své aplikace a použijte API s tokenem pro seznam uživatelů, nahrávání obrázků a synchronizační socket více instancí.

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

Kromě spuštění a ověření má OpenPlatform několik endpointů pro aplikace a další systémy. Jsou v `controllers/verify.js`, `controllers/api.js` a `controllers/socket.js`.

## Odeslání oznámení

Odpověď ověření obsahuje `notify`, adresu ve tvaru `<platform url>/notify/?token=<checksum of user and application>`, když uživatel přijímá oznámení. Aplikace na ni pošle `POST` s hlavičkou `x-token` a tělem JSON:

| Pole | Význam |
|---|---|
| `body` | text oznámení |
| `path` | cesta uvnitř aplikace, kterou oznámení otevře |
| `icon`, `color` | volitelné: nahradí ikonu a barvu aplikace |

Hodnota `x-token` je **token oznámení**, který OpenPlatform odvodí pro daného uživatele a aplikaci: MD5 adresy oznámení se solí `reqtoken` aplikace a MD5 tohoto výsledku se solí jejího `restoken` (`FUNC.makenotify` v `definitions/func.js`). Obě tajemství jsou stejná, která aplikace sdílí pro spuštění ([registrace aplikace](/en/openplatform/register-an-app/)).

OpenPlatform odpoví `Invalid token`, když se kontrolní součet nebo hlavička neshodují, a `Not allowed notifications`, když je uživatel nebo aplikace nepřijímá. Kontroluje také povolené adresy aplikace a že uživatel je potvrzený, povolený a aktivní. Když je vše v pořádku:

1. uloží oznámení (tabulka `tbl_notification`) a zvýší počítadlo nepřečtených uživatele;
2. aktualizuje relace tohoto uživatele otevřené v portálu, takže se počítadlo objeví okamžitě;
3. publikuje `Notifications.create` přes TMS, když je zapnuté nastavení `$tms`;
4. vrátí identifikátor oznámení.

Pro uživatele, kteří jsou offline a mají nepřečtená oznámení, servisní úloha pošle **e-mailový souhrn** ("Unread notifications"), když je nastavena pošta, nejvýše jednou za tři dny na uživatele (`definitions/init.js`).

## API uživatelů (token)

`GET /users/` vrací skupiny a uživatele platformy jako JSON. Je **vypnuté**, dokud nejsou nastaveny `allow_token` a `token`. Volající pošle token jako parametr dotazu `token` nebo jako hlavičku `x-token`; opakované špatné pokusy se blokují. Uživatelé přicházejí bez tajemství: identifikátor, reference, jazyk, pohlaví, fotografie (absolutní adresa), jméno, e-mail, barva, předvolby, příznaky (`sa`, `isdisabled`, `isinactive`, `isonline`), data a id jejich skupin.

## Nahrání obrázku

`POST /upload/base64/` (do 2 MB) přijímá tělo JSON s názvem souboru a `file` jako data URI, a pouze **JPEG**. Vyžaduje přihlášeného uživatele nebo token dotazu z nastavení `servicetoken` (odkud ten klíč pochází, viz [nastavení a databáze](/en/openplatform/settings-and-database/)). Obrázek se uloží do úložiště souborů `files` a odpovědí je jeho adresa, `/files/<id and checksum>.jpg`; adresa funguje jen s kontrolním součtem.

## Více instancí: synchronizační socket

`SOCKET /sync/` spojuje instance OpenPlatform. Klient se přijme, když je zapnuté nastavení `sync` a `token` v dotazu se rovná `sync_token`; každý jiný klient se půl sekundy po otevření zavře s kódem `4001`. Zprávy potvrzeného klienta se přenášejí ostatním a zatímco se potvrzený klient znovu připojuje, zprávy se řadí do fronty až na deset sekund.
