Measure MapΒοήθεια
Άνοιγμα του Measure Map

REST API

Κάντε από το δικό σας λογισμικό ό,τι κάνει η εφαρμογή με τα έργα, τους φακέλους και τα προϊόντα σας, τον οργανισμό σας Enterprise και τους επισκέπτες σας στο Open Guest· δοκιμάστε αιτήματα από τη σελίδα Προγραμματιστής και λάβετε webhooks όταν συμβαίνουν πράγματα.

Το REST API επιτρέπει στο δικό σας λογισμικό να κάνει ό,τι κάνει η εφαρμογή: έργα και μετρήσεις τους, φακέλους και τον κατάλογο προϊόντων· στο Enterprise, τον οργανισμό σας, όπως τον διαχειρίζεται η σελίδα Enterprise· στο Open Guest, τον σύνδεσμο επισκέπτη, τα έργα επισκεπτών και τα αιτήματα προσφοράς. Απαντά σε JSON. Η πλήρης αναφορά, με κάθε πεδίο και παράδειγμα, είναι η τεκμηρίωση API· αυτή η σελίδα είναι η επισκόπηση.

Για να ανοίξετε την τεκμηρίωση από την εφαρμογή, μεταβείτε στο Προγραμματιστής > REST 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 στέλνει πραγματικά αιτήματα με το κλειδί σας και δείχνει ακριβώς τι επιστρέφεται.

  1. Επιλέξτε Παραγωγή ή Sandbox.
  2. Διαλέξτε ένα Endpoint, όπως «Λίστα των έργων σας», «Λήψη μετρήσεων» ή «Λήψη λογαριασμού». Η λίστα προσφέρει τα endpoints που περιλαμβάνει το πρόγραμμά σας.
  3. Συμπληρώστε τις παραμέτρους του. Ένα έργο ή ένα προϊόν επιλέγεται με το όνομά του ανάμεσα σε όσα μπορεί να διαβάσει το κλειδί· όπου χρειάζεται ένα άτομο, συμπληρώνεται για εσάς ο δικός σας λογαριασμός.
  4. Πατήστε Αποστολή αιτήματος. Η κατάσταση και η απάντηση εμφανίζονται από κάτω.

Προσφέρονται μόνο αιτήματα ανάγνωσης, οπότε η δοκιμή δεν αλλάζει τίποτα, και αυτά τα αιτήματα δεν προσμετρώνται στη χρήση σας. Αν το κλειδί σας δεν έχει την πρόσβαση που χρειάζεται ένα endpoint, η σελίδα σας προειδοποιεί ότι θα απαντήσει με 403.

Δοκιμή του API με ένα αίτημα που στάλθηκε και την απάντησή του σε JSON

Webhooks#

Ένα webhook ειδοποιεί τον διακομιστή σας όταν συμβαίνει κάτι, όπως σας ειδοποιούν τα email ειδοποιήσεων. Τα webhooks ανήκουν στα προγράμματα Enterprise και Open Guest.

Ρυθμίστε ένα webhook#

Στο Προγραμματιστής > Webhooks:

  1. Πληκτρολογήστε το URL endpoint σας: μια διεύθυνση https:// στο διαδίκτυο. Οι διευθύνσεις σε ιδιωτικά δίκτυα απορρίπτονται και αυτό ελέγχεται ξανά πριν από κάθε παράδοση.
  2. Επιλέξτε τα Γεγονότα που θέλετε (δείτε τα συμβάντα). Ένα νέο endpoint ξεκινά με τα συμβάντα που στέλνει το πρόγραμμά σας και πρέπει να είναι επιλεγμένο τουλάχιστον ένα.
  3. Πατήστε Αποθήκευση. Την πρώτη φορά, η σελίδα δείχνει ολόκληρο το Secret υπογραφής σας. Αντιγράψτε το τότε: αργότερα εμφανίζονται μόνο οι τελευταίοι χαρακτήρες του.
  4. Πατήστε Αποστολή δοκιμαστικού γεγονότος και διαλέξτε ένα συμβάν.

Μια δοκιμή στέλνει ένα δείγμα αυτού του συμβάντος, με επινοημένες τιμές και "test": true στο data του, στο αποθηκευμένο endpoint σας, ακόμη και όταν το συμβάν δεν είναι επιλεγμένο ή το endpoint είναι απενεργοποιημένο. Για να σταματήσετε όλες τις παραδόσεις, πατήστε Κατάργηση: το endpoint και το secret του διαγράφονται.

Κάτω από τις ρυθμίσεις, το Αναφορά webhook έχει ό,τι χρειάζεστε για να γράψετε το δέκτη: τις κεφαλίδες και το σώμα, κώδικα που ελέγχει την υπογραφή σε Node.js, Python και PHP, και δείγματα δεδομένων για κάθε συμβάν.

Webhooks με ένα endpoint και τα συμβάντα που λαμβάνει

Τι λαμβάνει ο διακομιστής σας#

Κάθε συμβάν είναι ένα 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 για να βάζετε τα συμβάντα στη σειρά.

Ελέγξτε την υπογραφή#

Όποιος γνωρίζει τη διεύθυνσή σας μπορεί να στείλει σε αυτήν, γι' αυτό ελέγχετε κάθε παράδοση πριν την εμπιστευτείτε:

  1. Χωρίστε την κεφαλίδα X-MMO-Signature στο κόμμα σε t και v1.
  2. Υπολογίστε ένα HMAC-SHA256 του t, μιας τελείας και του ακατέργαστου σώματος του αιτήματος, με κλειδί το signing secret σας, γραμμένο σε δεκαεξαδική μορφή.
  3. Συγκρίνετε το αποτέλεσμα με το v1 με σύγκριση σταθερού χρόνου.
  4. Απορρίψτε την παράδοση αν το 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.

Χρειάζεστε ακόμη βοήθεια;

Γράψτε στην ομάδα υποστήριξής μας και πείτε μας τι προσπαθούσατε να κάνετε. Τα στιγμιότυπα οθόνης βοηθούν.

Email στην υποστήριξη