Powiadomienia i publiczne endpointy OpenPlatform
Poza uruchomieniem i weryfikacją OpenPlatform ma kilka endpointów dla aplikacji i innych systemów. Znajdują się w controllers/verify.js, controllers/api.js i controllers/socket.js.
Wysyłanie powiadomienia
Odpowiedź weryfikacji zawiera notify, adres w postaci <platform url>/notify/?token=<checksum of user and application>, gdy użytkownik akceptuje powiadomienia. Aplikacja wysyła na niego POST z nagłówkiem x-token i treścią JSON:
| Pole | Znaczenie |
|---|---|
body | tekst powiadomienia |
path | ścieżka wewnątrz aplikacji, którą otwiera powiadomienie |
icon, color | opcjonalne: zastępują ikonę i kolor aplikacji |
Wartością x-token jest token powiadomienia, który OpenPlatform wyprowadza dla danego użytkownika i aplikacji: MD5 adresu powiadomienia z solą reqtoken aplikacji oraz MD5 tego wyniku z solą jej restoken (FUNC.makenotify w definitions/func.js). Oba sekrety są tymi samymi, które aplikacja dzieli na potrzeby uruchomienia (rejestracja aplikacji).
OpenPlatform odpowiada Invalid token, gdy suma kontrolna lub nagłówek się nie zgadzają, oraz Not allowed notifications, gdy użytkownik lub aplikacja ich nie akceptuje. Sprawdza też dozwolone adresy aplikacji oraz to, że użytkownik jest potwierdzony, włączony i aktywny. Gdy wszystko jest w porządku:
- zapisuje powiadomienie (tabela
tbl_notification) i zwiększa licznik nieprzeczytanych użytkownika; - aktualizuje sesje tego użytkownika otwarte w portalu, aby licznik pojawił się od razu;
- publikuje
Notifications.createprzez TMS, gdy ustawienie$tmsjest włączone; - zwraca identyfikator powiadomienia.
Dla użytkowników, którzy są offline i mają nieprzeczytane powiadomienia, zadanie serwisowe wysyła podsumowanie e-mailem ("Unread notifications"), gdy skonfigurowana jest poczta, najwyżej raz na trzy dni na użytkownika (definitions/init.js).
API użytkowników (token)
GET /users/ zwraca grupy i użytkowników platformy jako JSON. Jest wyłączone, dopóki nie ustawisz allow_token i token. Wywołujący wysyła token jako parametr zapytania token lub nagłówek x-token; powtarzane błędne próby są blokowane. Użytkownicy przychodzą bez sekretów: identyfikator, odniesienie, język, płeć, zdjęcie (adres bezwzględny), imię i nazwisko, e-mail, kolor, preferencje, flagi (sa, isdisabled, isinactive, isonline), daty i identyfikatory ich grup.
Wysyłanie obrazu
POST /upload/base64/ (do 2 MB) przyjmuje treść JSON z nazwą pliku i file jako data URI oraz tylko JPEG. Wymaga zalogowanego użytkownika lub tokenu zapytania z ustawienia servicetoken (skąd pochodzi ten klucz, zobacz ustawienia i baza danych). Obraz jest zapisywany w magazynie plików files, a odpowiedzią jest jego adres, /files/<id and checksum>.jpg; adres działa tylko z sumą kontrolną.
Wiele instancji: gniazdo synchronizacji
SOCKET /sync/ łączy instancje OpenPlatform. Klient jest akceptowany, gdy ustawienie sync jest włączone, a token w zapytaniu jest równy sync_token; każdy inny klient jest zamykany z kodem 4001 pół sekundy po otwarciu. Wiadomości potwierdzonego klienta są przekazywane pozostałym, a gdy potwierdzony klient łączy się ponownie, wiadomości są kolejkowane do dziesięciu sekund.