EMDI web API
2.0.1 · openapi.yaml · Swagger
Οδηγός παρακάτω. Για Authorize / Try it out άνοιξε τη διαδραστική τεκμηρίωση (Swagger) σε νέα καρτέλα. Αναλυτικά πεδία JSON: Ανάλυση πεδίων EMDI web API.
Ξεκίνα εδώ (απλός οδηγός)
Αυτό το API επιτρέπει στο πρόγραμμά σου να μιλά με το EMDI web: επαφές, είδη, ραντεβού και παραστατικά αγορών/πωλήσεων.
Η βάση είναι /apps/api/. Επιλέγεις πόρο και ενέργεια από το URL.
1. Τι χρειάζεσαι πριν καλέσεις
- Προϊόν EMDI web με ενεργό πακέτο API.
- Το όνομα χρήστη EMDI web (το ίδιο με τη σύνδεση στον browser).
- Ένα HTTP key από το EMDI web: Ρυθμίσεις → Πωλήσεις/Αγορές → API (αντίγραψέ το· κράτα το μυστικό).
- Μετά από αλλαγή πακέτου ή δικαιωμάτων, ξανασυνδέσου στο EMDI web για να εφαρμοστεί.
Αν το πακέτο είναι κλειστό ή το key/user είναι λάθος, το API απαντά με σφάλμα (όχι με δεδομένα).
2. Πώς δουλεύει κάθε αίτημα
| Κομμάτι | Τι στέλνεις |
|---|---|
| Auth | Πάντα ?user=YOUR_USER&key=YOUR_HTTPKEY (ή κεφαλίδα X-API-Key) |
| Λίστα | GET /apps/api/list/{type}.json |
| Ανάγνωση | GET /apps/api/{type}/{id}.json |
| Αποθήκευση | POST /apps/api/save/{type}.json + JSON σώμα |
| Διαγραφή | DELETE /apps/api/{type}/{id}.json |
Το {type} είναι το όνομα πόρου (contacts, items, calendar, documents, ή lookup).
Μικρό παράδειγμα (λίστα ειδών παραστατικών)
|
1 |
curl -sS "https://web.sbzsystems.com/apps/api/list/doc_types.json?user=YOUR_USER&key=YOUR_HTTPKEY" |
Μικρό παράδειγμα (διάβασμα ενός ραντεβού)
|
1 |
curl -sS "https://web.sbzsystems.com/apps/api/calendar/5.json?user=YOUR_USER&key=YOUR_HTTPKEY" |
Μικρό παράδειγμα (αποθήκευση επαφής)
|
1 2 3 |
curl -sS -X POST "https://web.sbzsystems.com/apps/api/save/contacts.json?user=YOUR_USER&key=YOUR_HTTPKEY" \ -H "Content-Type: application/json; charset=utf-8" \ -d '{"id":0,"data":{"code":"C001","name":"Γιάννης","surname":"Παπαδόπουλος"}}' |
Απάντηση επιτυχίας
|
1 2 3 4 5 |
{ "success": true, "id": 5, "data": { } } |
Απάντηση σφάλματος
|
1 2 3 4 5 6 7 8 |
{ "success": false, "error": { "code": "validation", "message": "id is required", "field": "id" } } |
Συχνά error.code: auth, validation, not_found, duplicate, in_use, locked_mydata, package_disabled, rate_limited, server.
3. Πόροι
Lookups (λίστες επιλογών)
Μόνο GET /apps/api/list/{type}.json.
Το {type} ένα από: doc_types, vat_rates, users, contacts_relations, measurement_units, categories, subcategories, payment_methods, calendar_types, cashiers_positions
Κύρια δεδομένα (CRUD)
| type | Σημασία |
|---|---|
contacts |
Πελάτες / προμηθευτές / άλλες επαφές |
items |
Προϊόντα / υπηρεσίες |
calendar |
Ραντεβού |
documents |
Παραστατικά αγορών / πωλήσεων |
| Ενέργεια | Μέθοδος + URL |
|---|---|
| list | GET /apps/api/list/{type}.json (φίλτρα στο query: limit, offset, …) |
| get | GET /apps/api/{type}/{id}.json |
| save | POST /apps/api/save/{type}.json (id: 0 νέα, ή match: "code" upsert) |
| delete | DELETE /apps/api/{type}/{id}.json |
4. Χρήσιμες λεπτομέρειες
- Όριο: έως 60 κλήσεις ανά λεπτό ανά χρήστη + IP.
- Μέγεθος λίστας:
limitπροεπιλογή 50, μέγιστο 250 (επόμενη σελίδα μεoffset). balanceεπαφών: όπως η αναφορά Υπολοίπων. Προαιρετικάdate_from/date_to.- Αναζήτηση λίστας επαφών:
?name=στο trimmedOnoma+' '+Epiueto·?company=στο trimmedEpvnymia— χωρίς διάκριση κεφαλαίων/τόνων. Χωρίς%= ακριβές· βάλε εσύ%(π.χ.name=PETER MARKS,name=PETER%,company=%SBZ%). Επίσης ακριβέςcode,vat_number, καιactive,modified_since. - Στο save:
city,relation,unitμπορεί να δημιουργηθούν αυτόματα. Χρήστες / είδη παραστατικών πρέπει να υπάρχουν. - Παραστατικά (
documents): όλα τα πεδίαpvlhseis+ γραμμέςgrammesστοlines. Στο get οι γραμμές έρχονται πάντα· στο list βάλε?include_lines=1. Φίλτρα list:?series=(Seira, ίδιο trim/κεφαλαία/τόνοι/%μεname/companyεπαφών),?number=ακριβής (Ariumospar),?related_docs=στο trimmedSxetika. Σύνολα μεCALC_LINE_*. Χωρίς αποστολή myDATA από το API. - myDATA / in_use: κλειδωμένα παραστατικά δεν αλλάζουν· επαφές/είδη σε χρήση δεν διαγράφονται.
- Ανάλυση πεδίων: Ανάλυση πεδίων EMDI web API — κάθε κλειδί JSON ανά πόρο.
