# Notiser och OpenPlatforms publika slutpunkter

> Skicka en notis till en användare från din applikation och använd token-API:et för listan över användare, bilduppladdningen och synkroniseringssocketen för flera instanser.

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

Förutom starten och verifieringen har OpenPlatform några slutpunkter för applikationerna och för andra system. De finns i `controllers/verify.js`, `controllers/api.js` och `controllers/socket.js`.

## Skicka en notis

Verifieringens svar innehåller `notify`, en adress på formen `<platform url>/notify/?token=<checksum of user and application>`, när användaren godtar notiser. Applikationen skickar en `POST` till den med headern `x-token` och en JSON-kropp:

| Fält | Betydelse |
|---|---|
| `body` | notisens text |
| `path` | sökvägen inuti applikationen som notisen öppnar |
| `icon`, `color` | valfria: de ersätter applikationens ikon och färg |

Värdet för `x-token` är **notistoken** som OpenPlatform härleder för den användaren och applikationen: MD5 av notisadressen saltad med applikationens `reqtoken`, och MD5 av det resultatet saltad med dess `restoken` (`FUNC.makenotify` i `definitions/func.js`). Båda hemligheterna är desamma som applikationen delar för starten ([registrera en app](/en/openplatform/register-an-app/)).

OpenPlatform svarar `Invalid token` när kontrollsumman eller headern inte stämmer, och `Not allowed notifications` när användaren eller applikationen inte godtar dem. Den kontrollerar också applikationens tillåtna adresser och att användaren är bekräftad, aktiverad och aktiv. När allt stämmer:

1. lagrar den notisen (tabellen `tbl_notification`) och ökar användarens räknare för olästa;
2. uppdaterar den användarens sessioner som är öppna i portalen, så att räknaren syns direkt;
3. publicerar `Notifications.create` via TMS när inställningen `$tms` är på;
4. returnerar notisens identifierare.

För användare som är offline och har olästa notiser skickar ett servicejobb **en e-postsammanfattning** ("Unread notifications") när e-postinställningarna är konfigurerade, högst en gång var tredje dag per användare (`definitions/init.js`).

## Användar-API:et (en token)

`GET /users/` returnerar plattformens grupper och användare som JSON. Det är **inaktiverat** tills inställningarna `allow_token` och `token` är satta. Anroparen skickar token som frågeparametern `token` eller som headern `x-token`; upprepade felaktiga försök blockeras. Användarna kommer utan hemligheter: identifierare, referens, språk, kön, foto (en absolut adress), namn, e-post, färg, inställningar, flaggor (`sa`, `isdisabled`, `isinactive`, `isonline`), datum och id:n för deras grupper.

## Ladda upp en bild

`POST /upload/base64/` (upp till 2 MB) accepterar en JSON-kropp med filnamnet och `file` som data-URI, och bara **JPEG**. Det kräver en inloggad användare eller frågetoken från inställningen `servicetoken` (se [inställningar och databas](/en/openplatform/settings-and-database/) för var den nyckeln kommer ifrån). Bilden lagras i fillagret `files` och svaret är dess adress, `/files/<id and checksum>.jpg`; adressen fungerar bara med kontrollsumman.

## Flera instanser: synkroniseringssocketen

`SOCKET /sync/` ansluter instanser av OpenPlatform. En klient accepteras när inställningen `sync` är på och frågans `token` är lika med `sync_token`; varje annan klient stängs med koden `4001` en halv sekund efter öppnandet. En bekräftad klients meddelanden vidarebefordras till de andra, och medan en bekräftad klient återansluter köas meddelandena i upp till tio sekunder.
