GET/api/v1/customersread
Λίστα και αναζήτηση μελών
Επιστρέφει μέλη ταξινομημένα από το πιο πρόσφατο. Το «q» ψάχνει σε όνομα, email και τηλέφωνο.
| Παράμετρος | Τύπος | Περιγραφή |
|---|
| q | string | Όρος αναζήτησης. |
| limit | number | Πόσα το πολύ. Προεπιλογή 50, ανώτατο 200. |
* υποχρεωτικό
Παράδειγμα
curl "https://membly.gr/api/v1/customers?q=παπα&limit=10" \
-H "Authorization: Bearer mbl_live_..."
Απάντηση
{
"data": [
{
"serial": "GMGV-MMD6-PEZ0",
"firstName": "Ιωάννα",
"lastName": "Λαμπρόπουλος",
"email": "ioanna@example.com",
"phone": "6910001507",
"points": 162,
"lifetimePoints": 162,
"stamps": 3,
"tier": "Χάλκινο",
"createdAt": "2026-08-14T10:00:00.000Z"
}
]
}
GET/api/v1/customers/{serial}read
Ένα μέλος με το ιστορικό του
Το ίδιο αντικείμενο με τη λίστα, συν τις 20 τελευταίες κινήσεις. Ο «serial» είναι ο κωδικός που είναι τυπωμένος στην κάρτα ως barcode.
Παράδειγμα
curl "https://membly.gr/api/v1/customers/GMGV-MMD6-PEZ0" \
-H "Authorization: Bearer mbl_live_..."
Απάντηση
{
"data": {
"serial": "GMGV-MMD6-PEZ0",
"firstName": "Ιωάννα",
"points": 162,
"stamps": 3,
"tier": "Χάλκινο",
"transactions": [
{
"id": 59,
"points": 12,
"amountEur": 12.5,
"note": "Μέσω API",
"createdAt": "2026-08-24T11:02:14.881Z"
}
]
}
}
Σφάλματα αυτής της διαδρομής
- ·404 not_found — δεν υπάρχει μέλος με αυτόν τον κωδικό
POST/api/v1/customerswrite
Νέο μέλος
Γράφει μέλος και εκδίδει κάρτα. Δεν στέλνεται email επιβεβαίωσης: η εγγραφή έγινε στο δικό σου σύστημα, με τη δική σου συγκατάθεση.
| Πεδίο | Τύπος | Περιγραφή |
|---|
| firstName* | string | Όνομα. |
| lastName* | string | Επώνυμο. |
| email | string | Email. Χρειάζεται email ή τηλέφωνο — τουλάχιστον ένα. |
| phone | string | Τηλέφωνο. |
| isStudent | boolean | Φοιτητής, για τον αντίστοιχο πολλαπλασιαστή. |
* υποχρεωτικό
Παράδειγμα
curl -X POST https://membly.gr/api/v1/customers \
-H "Authorization: Bearer mbl_live_..." \
-H "Content-Type: application/json" \
-d '{"firstName": "Νίκος", "lastName": "Παπαδόπουλος"}'
Απάντηση
201 Created
{
"data": {
"serial": "K7TQ-84MN-RB2X",
"firstName": "Νίκος",
"lastName": "Παπαδόπουλος",
"points": 0,
"stamps": 0,
"tier": "Χάλκινο",
"createdAt": "2026-08-24T14:31:02.104Z"
}
}
Σφάλματα αυτής της διαδρομής
- ·400 no_contact — δεν δόθηκε ούτε email ούτε τηλέφωνο
- ·409 already_exists — υπάρχει ήδη μέλος με αυτό το email ή τηλέφωνο. Στο τηλέφωνο επιστρέφεται και το υπάρχον μέλος στο «data», ώστε να συνεχίσεις με τον κωδικό του
POST/api/v1/pointswrite
Πόντοι — πίστωση ή χρέωση
Θετικός αριθμός πιστώνει και περνά από τους πολλαπλασιαστές (φοιτητικό, επίπεδο μέλους, ενεργή προσφορά) — γι' αυτό το «awarded» μπορεί να διαφέρει από αυτό που έστειλες. Αρνητικός χρεώνει χωρίς να αγγίξει τους σωρευτικούς πόντους.
| Πεδίο | Τύπος | Περιγραφή |
|---|
| serial* | string | Ο κωδικός της κάρτας. |
| points* | number | Ακέραιος, θετικός ή αρνητικός. Το μηδέν απορρίπτεται. |
| amountEur | number | Το ποσό της αγοράς, για τις αναφορές. |
| note | string | Σημείωση στην κίνηση. |
| idempotencyKey | string | 8–80 χαρακτήρες. Το ίδιο κλειδί δεύτερη φορά **δεν** ξαναδίνει πόντους — επιστρέφει την αρχική κίνηση με «replayed: true». Στείλ' το πάντα από ταμείο. |
* υποχρεωτικό
Παράδειγμα
curl -X POST https://membly.gr/api/v1/points \
-H "Authorization: Bearer mbl_live_..." \
-H "Content-Type: application/json" \
-d '{"serial": "GMGV-MMD6-PEZ0", "points": 12, "idempotencyKey": "pos-2026-08-24-0042"}'
Απάντηση
{
"data": {
"customer": { "serial": "GMGV-MMD6-PEZ0", "points": 174, "…": "…" },
"awarded": 12,
"multiplier": 1,
"replayed": false,
"transaction": {
"id": 59,
"points": 12,
"amountEur": 12.5,
"note": "Μέσω API",
"createdAt": "2026-08-24T11:02:14.881Z"
}
}
}
Σφάλματα αυτής της διαδρομής
- ·404 not_found — δεν υπάρχει μέλος με αυτόν τον κωδικό
- ·422 rejected — η κίνηση απορρίφθηκε· το μήνυμα εξηγεί γιατί (π.χ. το υπόλοιπο δεν μπορεί να γίνει αρνητικό)
POST/api/v1/stampswrite
Σφραγίδα
Βάζει σφραγίδες. Όταν γεμίσει η κάρτα, το κουπόνι εκδίδεται μόνο του και ο εξαψήφιος κωδικός επιστρέφεται στο «giftCode».
| Πεδίο | Τύπος | Περιγραφή |
|---|
| serial* | string | Ο κωδικός της κάρτας. |
| count | number | 1 έως 10. Προεπιλογή 1. |
* υποχρεωτικό
Παράδειγμα
curl -X POST https://membly.gr/api/v1/stamps \
-H "Authorization: Bearer mbl_live_..." \
-H "Content-Type: application/json" \
-d '{"serial": "GMGV-MMD6-PEZ0"}'
Απάντηση
{
"data": {
"customer": { "serial": "GMGV-MMD6-PEZ0", "stamps": 6, "…": "…" },
"stamps": 6,
"left": 0,
"completed": 1,
"giftCode": "418302",
"message": "Γέμισε η κάρτα! Εκδόθηκε κουπόνι με κωδικό 418302."
}
}
Σφάλματα αυτής της διαδρομής
- ·404 not_found — δεν υπάρχει μέλος με αυτόν τον κωδικό
- ·409 stamps_disabled — η κάρτα σφραγίδων δεν είναι ενεργή στις ρυθμίσεις
GET/api/v1/productsread
Κατάλογος
Τα ενεργά προϊόντα με κανονική τιμή και τιμή μέλους. Το «minTier» είναι το ελάχιστο επίπεδο μέλους, ή null για όλους.
Παράδειγμα
curl "https://membly.gr/api/v1/products" \
-H "Authorization: Bearer mbl_live_..."
Απάντηση
{
"data": [
{
"id": 1,
"name": "Ελληνική λογοτεχνία",
"priceEur": 14.9,
"memberPriceEur": 13.4,
"category": "Βιβλία",
"minTier": null
}
]
}