REST API
Κάντε από το δικό σας λογισμικό ό,τι κάνει η εφαρμογή με τα έργα, τους φακέλους και τα προϊόντα σας, τον οργανισμό σας Enterprise και τους επισκέπτες σας στο Open Guest· δοκιμάστε αιτήματα από τη σελίδα Προγραμματιστής και λάβετε webhooks όταν συμβαίνουν πράγματα.
Το REST API επιτρέπει στο δικό σας λογισμικό να κάνει ό,τι κάνει η εφαρμογή: έργα και μετρήσεις τους, φακέλους και τον κατάλογο προϊόντων· στο Enterprise, τον οργανισμό σας, όπως τον διαχειρίζεται η σελίδα Enterprise· στο Open Guest, τον σύνδεσμο επισκέπτη, τα έργα επισκεπτών και τα αιτήματα προσφοράς. Απαντά σε JSON. Η πλήρης αναφορά, με κάθε πεδίο και παράδειγμα, είναι η τεκμηρίωση API· αυτή η σελίδα είναι η επισκόπηση.
Για να ανοίξετε την τεκμηρίωση από την εφαρμογή, μεταβείτε στο Προγραμματιστής > REST API και πατήστε Προβολή τεκμηρίωσης.
Βασική διεύθυνση URL#
Κάθε αίτημα πηγαίνει στη διεύθυνση:
https://api.measuremaponline.com/api/v2
Έλεγχος ταυτότητας#
Στείλτε το κλειδί API σας, ως έχει, στην κεφαλίδα Authorization κάθε
αιτήματος. Δημιουργήστε το κλειδί στη σελίδα Προγραμματιστής: δείτε τα
κλειδιά API.
curl https://api.measuremaponline.com/api/v2/projects/YOUR_PROJECT_ID \
-H "Authorization: YOUR_API_KEY"
Κάθε αίτημα ελέγχεται με βάση την πρόσβαση του κλειδιού (για παράδειγμα, Projects Ανάγνωση), τη συνδρομή σας και, για αίτημα που στέλνεται από ιστοσελίδα, τους περιορισμούς ιστότοπων του κλειδιού. Κρατήστε τα κλειδιά που μπορούν να αλλάξουν δεδομένα στον διακομιστή σας: δείτε κρατήστε το κλειδί σας ασφαλές.
Live και sandbox#
Υπάρχει μία βασική διεύθυνση URL και για τα δύο. Το κλειδί αποφασίζει: ένα κλειδί sandbox διαβάζει και γράφει έργα, φακέλους και προϊόντα sandbox, που τα live κλειδιά δεν βλέπουν ποτέ. Οι χρήστες, οι θέσεις και οι ομάδες του οργανισμού σας είναι ίδιοι και στα δύο, οπότε για να τους αλλάξετε χρειάζεστε live κλειδί. Τα έργα επισκεπτών που δημιουργούνται με κλειδί sandbox δεν χρεώνονται ποτέ και τα έργα sandbox δεν μπορούν να ενσωματωθούν στον ιστότοπό σας. Τα tokens αναφέρουν το περιβάλλον στο οποίο ανήκουν.
Τι καλύπτει το API#
| Ομάδα | Endpoints | Απαιτούμενη πρόσβαση κλειδιού |
|---|---|---|
| Tokens σύνδεσης | POST /auth/token, POST /auth/iframe/token |
Ενσωματωμένοι χάρτες (στο Open Guest, Έργα επισκεπτών) |
| Λογαριασμός | Το πρόγραμμα, οι θέσεις και το κλειδί του λογαριασμού με GET /account· τα αιτήματα API των τελευταίων 30 ημερών και, στο Open Guest, τα έργα επισκεπτών και ο προϋπολογισμός της περιόδου με GET /usage |
Λογαριασμός: Ανάγνωση |
| Έργα και φάκελοι | Τα έργα σας (GET /projects, ο Κάδος απορριμμάτων με trashed=true) και οι φάκελοι (GET /folders)· λήψη έργου, των μετρήσεών του (/projects/{pid}/data), των σχολίων του ή του αρχείου .mmp (/projects/{pid}/mmp)· δημιουργία, ενημέρωση και μετακίνηση έργων και φακέλων· συγχώνευση έργων (POST /projects/merge)· διαγραφή στον Κάδος απορριμμάτων και επαναφορά (POST /projects/{pid}/restore)· οι εκδόσεις ενός έργου (/projects/{pid}/versions)· αφαίρεση και επαναφορά σχολίων· κοινοποίηση έργου ή φακέλου μέσω email (PUT /projects/{pid}/members) |
Έργα: Ανάγνωση για ανάγνωση, Ανάγνωση και αλλαγή για αλλαγές |
| Αρχεία και αντίγραφα έργου | Εξαγωγή έργου στις μορφές της εφαρμογής (POST /projects/{pid}/export) ή λήψη της αναφοράς PDF (GET /projects/{pid}/pdf), και τα δύο ως σύνδεσμοι που λειτουργούν για 24 ώρες· αντιγραφή έργου ή δημιουργία προτύπου από αυτό (POST /projects/{pid}/copy) |
Έργα: Ανάγνωση· Ανάγνωση και αλλαγή για αντιγραφή. Οι τιμές σε μια αναφορά απαιτούν Προϊόντα: Ανάγνωση |
| Εκτιμήσεις | Η εκτίμηση ενός έργου, γραμμή προς γραμμή (GET /projects/{pid}/estimate) |
Έργα και Προϊόντα: Ανάγνωση |
| Προϊόντα | GET /products, GET /products/{id}, δημιουργία, ενημέρωση και αρχειοθέτηση με DELETE /products/{id} |
Προϊόντα: Ανάγνωση ή Ανάγνωση και αλλαγή |
| Προφίλ | Το προφίλ και οι ρυθμίσεις email (/account/profile)· για τον πελάτη ενός συνεργάτη, ποιος πληρώνει το πρόγραμμα και οι προσκλήσεις του (/account/partner) |
Λογαριασμός: Ανάγνωση, Ανάγνωση και αλλαγή |
| Εισαγωγές | Εισαγωγή αρχείων σε έργο (POST /projects/{pid}/imports), όπως η Εισαγωγή της εφαρμογής: προσθήκη ή αντικατάσταση και παρακολούθηση |
Έργα: Ανάγνωση και αλλαγή |
| Κλειδιά και webhook | Τα κλειδιά API του λογαριασμού (/keys: λίστα, ανάκληση, ιστότοποι· ποτέ ολόκληρα, ποτέ πέρα από την πρόσβαση του κλειδιού που καλεί) και το webhook του (/webhook) |
Προγραμματιστής: Ανάγνωση, Ανάγνωση και αλλαγή |
| Συνεργάτης | Πελάτες και προσκλήσεις, πρόγραμμα, θέσεις, προϋπολογισμός, πληρωμή και τιμολόγια ενός πελάτη (/partner) |
Πελάτες: Ανάγνωση, Ανάγνωση και αλλαγή |
| Enterprise: χρήστες, προσκλήσεις, θέσεις, ομάδες | Χρήστες (/enterprise/users): λίστα, αλλαγή ρόλου ή στοιχείων, απενεργοποίηση και ενεργοποίηση, αποσύνδεση παντού, αφαίρεση από τον οργανισμό, διαγραφή, ορισμός ομάδων, παράδοση των έργων τους. Προσκλήσεις (/enterprise/invitations): πρόσκληση, λίστα, εκ νέου αποστολή, ανάκληση. Θέσεις (GET /enterprise/seats). Ομάδες (/enterprise/teams). Όλα τα έργα του οργανισμού (GET /enterprise/projects) και τα έργα σε ομάδες |
Χρήστες: Ανάγνωση ή Ανάγνωση και αλλαγή· τα έργα απαιτούν Έργα |
| Enterprise: ο οργανισμός | Το προφίλ και η πολιτική του (/enterprise/organization), η ενιαία σύνδεση (GET /enterprise/sso), το αρχείο καταγραφής δραστηριότητας (GET /enterprise/activity), και η αγορά ή επιστροφή θέσεων (PUT /enterprise/seats) |
Οργανισμός: Ανάγνωση ή Ανάγνωση και αλλαγή |
| Open Guest | Ο σύνδεσμος επισκέπτη (/open-guest/link: λήψη, δημιουργία ή αντικατάσταση, παύση, επιλογή του φακέλου του)· έργα επισκεπτών (/open-guest/projects: λίστα, έναρξη ενός για έναν επισκέπτη, λήψη ενός)· αιτήματα προσφοράς με την προσφορά (/open-guest/requests)· η χρήση της περιόδου (GET /open-guest/usage) και ο προϋπολογισμός (PUT /open-guest/budget) |
Επισκέπτες: Ανάγνωση· Ανάγνωση και αλλαγή για αλλαγές |
Μερικά πράγματα που πρέπει να ξέρετε:
- Ένα κλειδί φτάνει στα έργα του δικού του λογαριασμού και, στο Enterprise, σε αυτά των χρηστών του οργανισμού.
- Η διαγραφή ενός έργου το βάζει στον Κάδος απορριμμάτων, όπως στην εφαρμογή, και μόνο ο
δημιουργός του μπορεί να το κάνει· διαγράψτε το οριστικά από τον Κάδος απορριμμάτων με
forever=true. Η διαγραφή ενός φακέλου βάζει τα έργα του στον Κάδος απορριμμάτων. - Στις μετρήσεις ενός έργου, ένα σχήμα παραθέτει τα προϊόντα του στο
productIds, με σειρά· τοproductIdείναι το πρώτο από αυτά. - Το
/projects/{pid}/mmpδίνει το ίδιο αρχείο.mmpπου εξάγει η εφαρμογή. Το σχήμα του δημοσιεύεται στο github.com/blueblinkone/mmp-validator. Νέα στοιχεία προστίθενται πάντα ως προαιρετικά, ώστε ένας αναγνώστης που γράφτηκε για παλαιότερο αρχείο να συνεχίζει να λειτουργεί. - Στο Open Guest, ένα έργο επισκέπτη που ξεκινά μέσω του API
(
POST /open-guest/projects) προσμετράται στη χρήση και τον προϋπολογισμό σας στο Open Guest, όπως ένα που ξεκινά από τον σύνδεσμο επισκέπτη. - Στο Open Guest, η ενότητα Σύνδεσμος επισκέπτη έχει
τον οδηγό Open Guest API, με κώδικα για τον διακομιστή και τη
σελίδα σας: ο διακομιστής σας παίρνει ένα token από το
POST /auth/tokenμε το live κλειδί σας και στέλνει τον επισκέπτη σε ένα νέο έργο δικό του, με συμπληρωμένα τα στοιχεία του. - Τα άτομα μπαίνουν στον οργανισμό σας μόνο με πρόσκληση
(
POST /enterprise/invitations), όπως στη σελίδα Enterprise: όποιος δεν έχει λογαριασμό παίρνει έναν και επιλέγει μόνος του κωδικό πρόσβασης. Το API δεν δημιουργεί ποτέ λογαριασμό ούτε ορίζει κωδικό πρόσβασης. - Η αφαίρεση ενός χρήστη (
POST /enterprise/users/{uid}/remove) του αφήνει τον λογαριασμό του· η διαγραφή (DELETE /enterprise/users/{uid}) τον διαγράφει. Και στις δύο περιπτώσεις η δουλειά που έκανε μένει στον οργανισμό, σε νέο φάκελο με το όνομά του, που μοιράζονται οι διαχειριστές σας. - Όταν ένας επισκέπτης ζητά την προσφορά σας, το
GET /open-guest/requests/{pid}απαντά ποιος είναι, τι έγραψε, τι μέτρησε και, με Προϊόντα: Ανάγνωση, την ίδια την προσφορά. - Στο Open Guest, τα tokens ξεκινούν έργα επισκεπτών για τους επισκέπτες σας.
Το
POST /auth/iframe/token, που συνδέει έναν επισκέπτη σε έναν ενσωματωμένο χάρτη, προορίζεται για κλειδιά Enterprise. - Τα προϊόντα δεν διαγράφονται ποτέ μέσω του API, μόνο αρχειοθετούνται, και η τιμή κόστους ενός προϊόντος δεν επιστρέφεται ποτέ.
- Τα κτηματολογικά γεωτεμάχια δεν αποτελούν μέρος του API.
Απαντήσεις και σφάλματα#
Ένα επιτυχές αίτημα απαντά με κατάσταση 200 και JSON (η εξαγωγή .mmp απαντά
με XML). Ένα αίτημα που απέτυχε απαντά με κατάσταση σφάλματος και σώμα όπως:
{"errorCode": "insufficient_scope", "errorMessage": "This API key does not have the scope required for this endpoint"}
| Κατάσταση | errorCode |
Τι να ελέγξετε |
|---|---|---|
| 400 | invalid_body, invalid_uid, invalid_project_id, pagination_invalid_page_number, pagination_invalid_page_limit |
Μια τιμή στο αίτημα λείπει ή δεν γίνεται δεκτή, όπως τα page και limit μιας λίστας σε σελίδες. |
| 401 | unauthorized_action |
Το αίτημα στάλθηκε από ιστοσελίδα σε ιστότοπο που το κλειδί δεν επιτρέπει, ή το στοιχείο δεν ανήκει στον λογαριασμό σας ή στα μέλη σας. |
| 402 | budget_limit_reached |
Open Guest: το όριο προϋπολογισμού σας έχει συμπληρωθεί, οπότε δεν υπάρχουν άλλα έργα επισκεπτών αυτή την περίοδο. |
| 403 | invalid_api_key |
Δεν στάλθηκε κλειδί στην κεφαλίδα Authorization, ή το κλειδί είναι άγνωστο, ανακλήθηκε ή πέρασαν οι 24 ώρες του μετά την αντικατάστασή του. |
| 403 | api_key_suspended |
Η πρόσβαση API στον λογαριασμό σας έχει ανασταλεί. Επικοινωνήστε με την υποστήριξη. |
| 403 | subscription_expired, invalid_subscription |
Η συνδρομή δεν είναι ενεργή ή το πρόγραμμά της δεν έχει API. |
| 403 | insufficient_scope |
Το κλειδί δεν έχει την πρόσβαση που χρειάζεται αυτό το endpoint. |
| 403 | scope_not_in_plan |
Το πρόγραμμά σας δεν περιλαμβάνει αυτό το endpoint, για παράδειγμα την ενότητα Enterprise στο Open Guest. |
| 403 | embed_needs_enterprise |
Οι ενσωματωμένοι χάρτες ανήκουν στο πρόγραμμα Enterprise. Ένα κλειδί Open Guest ανοίγει μόνο τα δικά του έργα επισκεπτών. |
| 404 | not_found, project_not_found, user_not_found |
Το στοιχείο δεν υπάρχει ή το άτομο δεν είναι χρήστης του οργανισμού σας. |
| 409 | enterprise_add_users_limit |
Πρόσκληση κάποιου: όλες οι θέσεις είναι κατειλημμένες και οι αυτόματες θέσεις είναι ανενεργές. |
| 409 | project_not_in_trash |
Ζητήθηκε επαναφορά ή οριστική διαγραφή για έργο που δεν βρίσκεται στον Κάδος απορριμμάτων. |
| 429 | too_many_requests |
Περισσότερα από 600 tokens μέσα σε μία ώρα. Περιμένετε λίγο και δοκιμάστε ξανά. |
| 500 | server_error |
Το αίτημα δεν μπόρεσε να ολοκληρωθεί. Ελέγξτε τα ID που στείλατε, δοκιμάστε ξανά και επικοινωνήστε με την υποστήριξη αν επιμένει. |
Δοκιμάστε το API από τη σελίδα Προγραμματιστής#
Το Προγραμματιστής > Δοκιμάστε το API στέλνει πραγματικά αιτήματα με το κλειδί σας και δείχνει ακριβώς τι επιστρέφεται.
- Επιλέξτε Παραγωγή ή Sandbox.
- Διαλέξτε ένα Endpoint, όπως «Λίστα των έργων σας», «Λήψη μετρήσεων» ή «Λήψη λογαριασμού». Η λίστα προσφέρει τα endpoints που περιλαμβάνει το πρόγραμμά σας.
- Συμπληρώστε τις παραμέτρους του. Ένα έργο ή ένα προϊόν επιλέγεται με το όνομά του ανάμεσα σε όσα μπορεί να διαβάσει το κλειδί· όπου χρειάζεται ένα άτομο, συμπληρώνεται για εσάς ο δικός σας λογαριασμός.
- Πατήστε Αποστολή αιτήματος. Η κατάσταση και η απάντηση εμφανίζονται από κάτω.
Προσφέρονται μόνο αιτήματα ανάγνωσης, οπότε η δοκιμή δεν αλλάζει τίποτα, και αυτά τα αιτήματα δεν προσμετρώνται στη χρήση σας. Αν το κλειδί σας δεν έχει την πρόσβαση που χρειάζεται ένα endpoint, η σελίδα σας προειδοποιεί ότι θα απαντήσει με 403.
Webhooks#
Ένα webhook ειδοποιεί τον διακομιστή σας όταν συμβαίνει κάτι, όπως σας ειδοποιούν τα email ειδοποιήσεων. Τα webhooks ανήκουν στα προγράμματα Enterprise και Open Guest.
Ρυθμίστε ένα webhook#
Στο Προγραμματιστής > Webhooks:
- Πληκτρολογήστε το URL endpoint σας: μια διεύθυνση
https://στο διαδίκτυο. Οι διευθύνσεις σε ιδιωτικά δίκτυα απορρίπτονται και αυτό ελέγχεται ξανά πριν από κάθε παράδοση. - Επιλέξτε τα Γεγονότα που θέλετε (δείτε τα συμβάντα). Ένα νέο endpoint ξεκινά με τα συμβάντα που στέλνει το πρόγραμμά σας και πρέπει να είναι επιλεγμένο τουλάχιστον ένα.
- Πατήστε Αποθήκευση. Την πρώτη φορά, η σελίδα δείχνει ολόκληρο το Secret υπογραφής σας. Αντιγράψτε το τότε: αργότερα εμφανίζονται μόνο οι τελευταίοι χαρακτήρες του.
- Πατήστε Αποστολή δοκιμαστικού γεγονότος και διαλέξτε ένα συμβάν.
Μια δοκιμή στέλνει ένα δείγμα αυτού του συμβάντος, με επινοημένες τιμές και
"test": true στο data του, στο αποθηκευμένο endpoint σας, ακόμη και όταν το
συμβάν δεν είναι επιλεγμένο ή το endpoint είναι απενεργοποιημένο. Για να
σταματήσετε όλες τις παραδόσεις, πατήστε Κατάργηση: το endpoint και το secret του διαγράφονται.
Κάτω από τις ρυθμίσεις, το Αναφορά webhook έχει ό,τι χρειάζεστε για να γράψετε το δέκτη: τις κεφαλίδες και το σώμα, κώδικα που ελέγχει την υπογραφή σε Node.js, Python και PHP, και δείγματα δεδομένων για κάθε συμβάν.
Τι λαμβάνει ο διακομιστής σας#
Κάθε συμβάν είναι ένα POST προς το endpoint σας, με σώμα JSON:
{"id": "evt_3f9a1c2b7d4e5f60718293a4", "type": "project.created", "created": 1790000000000, "data": { ... }}
Το id είναι μοναδικό για κάθε συμβάν, το created είναι πότε συνέβη σε
χιλιοστά του δευτερολέπτου από την 1η Ιανουαρίου 1970 (UTC), και το τι περιέχει
το data εξαρτάται από το συμβάν. Το αίτημα έχει επίσης αυτές τις κεφαλίδες:
| Κεφαλίδα | Τιμή |
|---|---|
X-MMO-Event |
Το όνομα του συμβάντος, όπως το type στο σώμα. |
X-MMO-Delivery |
Το id του συμβάντος. |
X-MMO-Signature |
t=<milliseconds>,v1=<hex>: πότε υπογράφηκε η παράδοση και η υπογραφή της. |
User-Agent |
MeasureMapOnline-Webhooks/1 |
- Απαντήστε με κατάσταση 2xx μέσα σε 8 δευτερόλεπτα, πριν από οποιαδήποτε αργή εργασία. Οποιαδήποτε άλλη κατάσταση, ανακατεύθυνση ή λήξη χρόνου μετράει ως αποτυχία.
- Κάθε συμβάν στέλνεται μία φορά και δεν επαναλαμβάνεται ποτέ. Η ενότητα δείχνει την Τελευταία παράδοση και τις Διαδοχικές αποτυχίες.
- Μετά από 10 αποτυχίες στη σειρά, το endpoint απενεργοποιείται και ο κάτοχος λαμβάνει email. Διορθώστε τον διακομιστή σας και πατήστε Αποθήκευση για να το ενεργοποιήσετε ξανά.
- Κατά καιρούς ένα συμβάν φτάνει δύο φορές ή εκτός σειράς. Χρησιμοποιήστε το
idγια να αγνοείτε τις επαναλήψεις και τοcreatedγια να βάζετε τα συμβάντα στη σειρά.
Ελέγξτε την υπογραφή#
Όποιος γνωρίζει τη διεύθυνσή σας μπορεί να στείλει σε αυτήν, γι' αυτό ελέγχετε κάθε παράδοση πριν την εμπιστευτείτε:
- Χωρίστε την κεφαλίδα
X-MMO-Signatureστο κόμμα σεtκαιv1. - Υπολογίστε ένα HMAC-SHA256 του
t, μιας τελείας και του ακατέργαστου σώματος του αιτήματος, με κλειδί το signing secret σας, γραμμένο σε δεκαεξαδική μορφή. - Συγκρίνετε το αποτέλεσμα με το
v1με σύγκριση σταθερού χρόνου. - Απορρίψτε την παράδοση αν το
tαπέχει περισσότερο από 5 λεπτά από την τρέχουσα ώρα. Τοtείναι σε χιλιοστά του δευτερολέπτου.
Χρησιμοποιήστε το σώμα ακριβώς όπως έφτασε: αν αναλύσετε το JSON και το γράψετε ξανά, αλλάζει και η υπογραφή δεν ταιριάζει πια.
Το Ανανέωση secret αντικαθιστά αμέσως το secret και δείχνει το νέο ολόκληρο, μία φορά. Ενημερώστε τον διακομιστή σας αμέσως μόλις το αλλάξετε.
Συμβάντα#
| Συμβάν | Στέλνεται όταν |
|---|---|
project.created |
Δημιουργείται ένα έργο στον λογαριασμό σας. Στην εφαρμογή, μέσω του API ή από μια ενσωμάτωση. |
project.deleted |
Ένα έργο διαγράφεται οριστικά (η μεταφορά του στον κάδο δεν υπολογίζεται). |
project.comment.added |
Κάποιος σχολιάζει ένα έργο — συνήθως ο πελάτης σας που απαντά. |
guest.project.created (Open Guest) |
Ένας επισκέπτης ξεκινά ένα έργο από τον σύνδεσμό σας ή μέσω του API. Μόνο όταν η διεύθυνση email του επισκέπτη είναι γνωστή. |
guest.measurement.completed (Open Guest) |
Ένας επισκέπτης ολοκληρώνει μια μέτρηση και αφήνει τα στοιχεία επικοινωνίας του. |
budget.warning_reached (Open Guest) |
Η μετρούμενη δαπάνη ξεπερνά το όριο προειδοποίησής σας. |
budget.limit_reached (Open Guest) |
Η μετρούμενη δαπάνη φτάνει στο όριό σας — τα επόμενα έργα επισκεπτών απορρίπτονται. |
enterprise.user.created (Enterprise) |
Προστίθεται μια θέση στον οργανισμό σας, μεταξύ άλλων μέσω single sign-on. |
Χρειάζεστε ακόμη βοήθεια;
Γράψτε στην ομάδα υποστήριξής μας και πείτε μας τι προσπαθούσατε να κάνετε. Τα στιγμιότυπα οθόνης βοηθούν.