# Ειδοποιήσεις και τα δημόσια endpoints του OpenPlatform

> Στείλτε μια ειδοποίηση σε έναν χρήστη από την εφαρμογή σας και χρησιμοποιήστε το API με token για τη λίστα χρηστών, τη μεταφόρτωση εικόνων και το socket συγχρονισμού πολλών στιγμιοτύπων.

Framework: openplatform
Product: OpenPlatform (openplatform@5)
Language: el
Content-SHA256: 91ea970009c8a4b12563f13efeb668bf82ed0370838dd6f34328ebd088a2539c
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: 
Review: not-recorded

Εκτός από την εκκίνηση και την επαλήθευση, το OpenPlatform έχει μερικά endpoints για τις εφαρμογές και για άλλα συστήματα. Βρίσκονται στα `controllers/verify.js`, `controllers/api.js` και `controllers/socket.js`.

## Αποστολή ειδοποίησης

Η απάντηση της επαλήθευσης περιέχει το `notify`, μια διεύθυνση της μορφής `<platform url>/notify/?token=<checksum of user and application>`, όταν ο χρήστης δέχεται ειδοποιήσεις. Η εφαρμογή στέλνει σε αυτήν ένα `POST` με την κεφαλίδα `x-token` και σώμα JSON:

| Πεδίο | Σημασία |
|---|---|
| `body` | το κείμενο της ειδοποίησης |
| `path` | η διαδρομή μέσα στην εφαρμογή που ανοίγει η ειδοποίηση |
| `icon`, `color` | προαιρετικά: αντικαθιστούν το εικονίδιο και το χρώμα της εφαρμογής |

Η τιμή του `x-token` είναι το **token ειδοποίησης** που παράγει το OpenPlatform για αυτόν τον χρήστη και την εφαρμογή: το MD5 της διεύθυνσης ειδοποίησης με salt το `reqtoken` της εφαρμογής και το MD5 αυτού του αποτελέσματος με salt το `restoken` της (`FUNC.makenotify` στο `definitions/func.js`). Και τα δύο μυστικά είναι τα ίδια που μοιράζεται η εφαρμογή για την εκκίνηση ([καταχώριση μιας εφαρμογής](/en/openplatform/register-an-app/)).

Το OpenPlatform απαντά `Invalid token` όταν το άθροισμα ελέγχου ή η κεφαλίδα δεν ταιριάζουν και `Not allowed notifications` όταν ο χρήστης ή η εφαρμογή δεν τις δέχεται. Ελέγχει επίσης τις επιτρεπόμενες διευθύνσεις της εφαρμογής και ότι ο χρήστης είναι επιβεβαιωμένος, ενεργοποιημένος και ενεργός. Όταν όλα είναι σωστά:

1. αποθηκεύει την ειδοποίηση (πίνακας `tbl_notification`) και αυξάνει τον μετρητή μη αναγνωσμένων του χρήστη·
2. ενημερώνει τις συνεδρίες αυτού του χρήστη που είναι ανοιχτές στην πύλη, ώστε ο μετρητής να εμφανιστεί αμέσως·
3. δημοσιεύει το `Notifications.create` μέσω TMS όταν η ρύθμιση `$tms` είναι ενεργή·
4. επιστρέφει το αναγνωριστικό της ειδοποίησης.

Για χρήστες που είναι εκτός σύνδεσης και έχουν μη αναγνωσμένες ειδοποιήσεις, μια εργασία υπηρεσίας στέλνει **μια σύνοψη με email** ("Unread notifications") όταν οι ρυθμίσεις αλληλογραφίας είναι διαμορφωμένες, το πολύ μία φορά κάθε τρεις ημέρες ανά χρήστη (`definitions/init.js`).

## Το API χρηστών (ένα token)

Το `GET /users/` επιστρέφει τις ομάδες και τους χρήστες της πλατφόρμας ως JSON. Είναι **απενεργοποιημένο** μέχρι να οριστούν οι ρυθμίσεις `allow_token` και `token`. Ο καλών στέλνει το token ως παράμετρο ερωτήματος `token` ή ως κεφαλίδα `x-token`· οι επαναλαμβανόμενες λανθασμένες προσπάθειες μπλοκάρονται. Οι χρήστες έρχονται χωρίς μυστικά: αναγνωριστικό, αναφορά, γλώσσα, φύλο, φωτογραφία (απόλυτη διεύθυνση), όνομα, email, χρώμα, προτιμήσεις, σημαίες (`sa`, `isdisabled`, `isinactive`, `isonline`), ημερομηνίες και τα αναγνωριστικά των ομάδων τους.

## Μεταφόρτωση εικόνας

Το `POST /upload/base64/` (έως 2 MB) δέχεται σώμα JSON με το όνομα αρχείου και το `file` ως data URI, και μόνο **JPEG**. Χρειάζεται συνδεδεμένο χρήστη ή το token ερωτήματος της ρύθμισης `servicetoken` (δείτε [ρυθμίσεις και βάση δεδομένων](/en/openplatform/settings-and-database/) για το από πού προέρχεται αυτό το κλειδί). Η εικόνα αποθηκεύεται στον χώρο αρχείων `files` και η απάντηση είναι η διεύθυνσή της, `/files/<id and checksum>.jpg`· η διεύθυνση λειτουργεί μόνο με το άθροισμα ελέγχου.

## Πολλά στιγμιότυπα: το socket συγχρονισμού

Το `SOCKET /sync/` συνδέει στιγμιότυπα του OpenPlatform. Ένας πελάτης γίνεται δεκτός όταν η ρύθμιση `sync` είναι ενεργή και το `token` του ερωτήματος ισούται με το `sync_token`· κάθε άλλος πελάτης κλείνει με τον κωδικό `4001` μισό δευτερόλεπτο μετά το άνοιγμα. Τα μηνύματα ενός επιβεβαιωμένου πελάτη αναμεταδίδονται στους υπόλοιπους και ενώ ένας επιβεβαιωμένος πελάτης επανασυνδέεται, τα μηνύματα μπαίνουν σε ουρά έως δέκα δευτερόλεπτα.
