Benachrichtigungen und die öffentlichen Endpunkte von OpenPlatform
Neben dem Start und der Verifizierung hat OpenPlatform einige Endpunkte für die Anwendungen und für andere Systeme. Sie stehen in controllers/verify.js, controllers/api.js und controllers/socket.js.
Eine Benachrichtigung senden
Die Antwort der Verifizierung enthält notify, eine Adresse der Form <platform url>/notify/?token=<checksum of user and application>, wenn der Benutzer Benachrichtigungen akzeptiert. Die Anwendung sendet ein POST dorthin mit dem Header x-token und einem JSON-Body:
| Feld | Bedeutung |
|---|---|
body | der Text der Benachrichtigung |
path | der Pfad innerhalb der Anwendung, den die Benachrichtigung öffnet |
icon, color | optional: ersetzen Icon und Farbe der Anwendung |
Der Wert von x-token ist das Benachrichtigungs-Token, das OpenPlatform für diesen Benutzer und diese Anwendung ableitet: der MD5 der Benachrichtigungsadresse mit dem reqtoken der Anwendung als Salt und der MD5 dieses Ergebnisses mit ihrem restoken als Salt (FUNC.makenotify in definitions/func.js). Beide Geheimnisse sind dieselben, die die Anwendung für den Start teilt (Eine App registrieren).
OpenPlatform antwortet Invalid token, wenn Prüfsumme oder Header nicht passen, und Not allowed notifications, wenn der Benutzer oder die Anwendung sie nicht akzeptiert. Es prüft außerdem die erlaubten Adressen der Anwendung und dass der Benutzer bestätigt, aktiviert und aktiv ist. Wenn alles stimmt:
- speichert es die Benachrichtigung (Tabelle
tbl_notification) und erhöht den Zähler ungelesener Nachrichten des Benutzers; - aktualisiert es die im Portal geöffneten Sitzungen dieses Benutzers, damit der Zähler sofort erscheint;
- veröffentlicht es
Notifications.createper TMS, wenn die Einstellung$tmsaktiv ist; - gibt es die Kennung der Benachrichtigung zurück.
Für Benutzer, die offline sind und ungelesene Benachrichtigungen haben, sendet ein Dienstjob eine E-Mail-Zusammenfassung ("Unread notifications"), wenn die Mail-Einstellungen konfiguriert sind, höchstens einmal alle drei Tage pro Benutzer (definitions/init.js).
Die Benutzer-API (ein Token)
GET /users/ liefert die Gruppen und Benutzer der Plattform als JSON. Sie ist deaktiviert, bis die Einstellungen allow_token und token gesetzt sind. Der Aufrufer sendet das Token als Query-Parameter token oder als Header x-token; wiederholte falsche Versuche werden gesperrt. Die Benutzer kommen ohne Geheimnisse: Kennung, Referenz, Sprache, Geschlecht, Foto (eine absolute Adresse), Name, E-Mail, Farbe, Einstellungen, Flags (sa, isdisabled, isinactive, isonline), Daten und die Ids ihrer Gruppen.
Ein Bild hochladen
POST /upload/base64/ (bis 2 MB) akzeptiert einen JSON-Body mit dem Dateinamen und file als Data-URI, und nur JPEG. Es braucht einen angemeldeten Benutzer oder das Query-Token der Einstellung servicetoken (siehe Einstellungen und Datenbank, woher dieser Schlüssel kommt). Das Bild wird im Dateispeicher files abgelegt, und die Antwort ist seine Adresse, /files/<id and checksum>.jpg; die Adresse funktioniert nur mit der Prüfsumme.
Mehrere Instanzen: der Sync-Socket
SOCKET /sync/ verbindet Instanzen von OpenPlatform. Ein Client wird akzeptiert, wenn die Einstellung sync aktiv ist und das Query-token gleich sync_token ist; jeder andere Client wird eine halbe Sekunde nach dem Öffnen mit dem Code 4001 geschlossen. Die Nachrichten eines bestätigten Clients werden an die anderen weitergereicht, und während sich ein bestätigter Client neu verbindet, werden die Nachrichten bis zu zehn Sekunden lang in eine Warteschlange gestellt.