Measure MapPomoc
Otwórz Measure Map

REST API

Rób z własnego oprogramowania to, co robi aplikacja z Twoimi projektami, folderami i produktami, organizacją Enterprise i leadami z Open Guest; wypróbowuj żądania na stronie Developer i odbieraj webhooki, gdy coś się dzieje.

REST API pozwala Twojemu oprogramowaniu robić to, co robi aplikacja: projekty i ich pomiary, foldery i katalog produktów; w planie Enterprise Twoją organizację, tak jak prowadzi ją strona Enterprise; w planie Open Guest Twój link dla gościa, projekty gości i prośby o wycenę. Odpowiada w formacie JSON. Pełna dokumentacja, z każdym polem i przykładem, to dokumentacja API; ta strona jest jej przeglądem.

Aby otworzyć dokumentację z aplikacji, przejdź do Deweloper > REST API i naciśnij Zobacz dokumentację.

Sekcja REST API na stronie Developer

Adres bazowy#

Każde żądanie trafia pod adres:

https://api.measuremaponline.com/api/v2

Uwierzytelnianie#

Wysyłaj swój klucz API, bez zmian, w nagłówku Authorization każdego żądania. Klucz utworzysz na stronie Developer: zobacz klucze API.

curl https://api.measuremaponline.com/api/v2/projects/YOUR_PROJECT_ID \
  -H "Authorization: YOUR_API_KEY"

Każde żądanie jest sprawdzane pod kątem dostępu klucza (na przykład Projekty Odczyt), Twojej subskrypcji oraz, w przypadku żądania wysłanego ze strony internetowej, ograniczeń stron klucza. Klucze, które mogą zmieniać dane, trzymaj na swoim serwerze: zobacz dbaj o bezpieczeństwo klucza.

Live i sandbox#

Dla obu środowisk jest jeden adres bazowy. Decyduje klucz: klucz sandbox odczytuje i zapisuje projekty, foldery i produkty sandbox, których klucze live nigdy nie widzą. Użytkownicy, miejsca i zespoły Twojej organizacji są takie same w obu, więc ich zmiana wymaga klucza live. Projekty gości utworzone kluczem sandbox nigdy nie są rozliczane, a projektów sandbox nie można osadzić na Twojej stronie. Tokeny zawierają informację o środowisku, do którego należą.

Co obejmuje API#

Grupa Endpointy Wymagany dostęp klucza
Tokeny logowania POST /auth/token, POST /auth/iframe/token Osadzone mapy (w Open Guest Projekty gości)
Konto Plan, miejsca i klucz konta przez GET /account; żądania API z ostatnich 30 dni oraz, w Open Guest, projekty gości i budżet okresu przez GET /usage Konto: Odczyt
Projekty i foldery Twoje projekty (GET /projects, Kosz z trashed=true) i foldery (GET /folders); pobieranie projektu, jego pomiarów (/projects/{pid}/data), komentarzy lub pliku .mmp (/projects/{pid}/mmp); tworzenie, aktualizowanie i przenoszenie projektów i folderów; scalanie projektów (POST /projects/merge); usuwanie do kosza (Kosz) i przywracanie (POST /projects/{pid}/restore); wersje projektu (/projects/{pid}/versions); usuwanie i przywracanie komentarzy; udostępnianie projektu lub folderu e-mailem (PUT /projects/{pid}/members) Projekty: Odczyt do odczytu, Odczyt i zmiany do zmian
Pliki projektów i kopie Eksport projektu w formatach aplikacji (POST /projects/{pid}/export) lub pobranie jego raportu PDF (GET /projects/{pid}/pdf), oba jako linki działające przez 24 godziny; kopiowanie projektu lub tworzenie z niego szablonu (POST /projects/{pid}/copy) Projekty: Odczyt; Odczyt i zmiany do kopiowania. Ceny w raporcie wymagają Produkty: Odczyt
Wyceny Wycena projektu, pozycja po pozycji (GET /projects/{pid}/estimate) Projekty i Produkty: Odczyt
Produkty GET /products, GET /products/{id}, tworzenie, aktualizowanie i archiwizowanie przez DELETE /products/{id} Produkty: Odczyt lub Odczyt i zmiany
Profil Profil i ustawienia e-mail (/account/profile); dla klienta partnera: kto płaci za jego plan i jego zaproszenia (/account/partner) Konto: Odczyt, Odczyt i zmiany
Importy Import plików do projektu (POST /projects/{pid}/imports), jak Import w aplikacji: dodanie lub zastąpienie, a potem śledzenie postępu Projekty: Odczyt i zmiany
Klucze i webhook Klucze API konta (/keys: lista, unieważnianie, witryny; nigdy w całości, nigdy poza dostęp wywołującego klucza) i jego webhook (/webhook) Deweloper: Odczyt, Odczyt i zmiany
Partner Klienci i zaproszenia, plan, licencje, budżet, płatności i faktury klienta (/partner) Klienci: Odczyt, Odczyt i zmiany
Enterprise: użytkownicy, zaproszenia, miejsca, zespoły Użytkownicy (/enterprise/users): lista, zmiana roli lub danych, wyłączanie i włączanie, wylogowanie wszędzie, usunięcie z organizacji, usunięcie konta, ustawianie zespołów, przekazanie projektów. Zaproszenia (/enterprise/invitations): zapraszanie, lista, ponowne wysłanie, wycofanie. Miejsca (GET /enterprise/seats). Zespoły (/enterprise/teams). Każdy projekt organizacji (GET /enterprise/projects) i projekty w zespołach Użytkownicy: Odczyt lub Odczyt i zmiany; projekty wymagają Projekty
Enterprise: organizacja Jej profil i polityka (/enterprise/organization), logowanie jednokrotne (GET /enterprise/sso), dziennik aktywności (GET /enterprise/activity) oraz kupowanie i oddawanie miejsc (PUT /enterprise/seats) Organizacja: Odczyt lub Odczyt i zmiany
Open Guest Twój link dla gościa (/open-guest/link: pobranie, utworzenie lub zastąpienie, wstrzymanie, wybór jego folderu); projekty gości (/open-guest/projects: lista, rozpoczęcie jednego dla odwiedzającego, pobranie jednego); prośby o wycenę razem z wyceną (/open-guest/requests); zużycie w tym okresie (GET /open-guest/usage) i budżet (PUT /open-guest/budget) Goście: Odczyt; Odczyt i zmiany do zmian

Kilka rzeczy, o których warto wiedzieć:

  • Klucz ma dostęp do projektów własnego konta i, w planie Enterprise, do projektów użytkowników organizacji.
  • Usunięcie projektu przenosi go do kosza (Kosz), tak jak w aplikacji, i może to zrobić tylko jego twórca; usuń go na stałe z kosza (Kosz) za pomocą forever=true. Usunięcie folderu przenosi jego projekty do kosza (Kosz).
  • W pomiarach projektu kształt wymienia swoje produkty w productIds, po kolei; productId to pierwszy z nich.
  • /projects/{pid}/mmp daje ten sam plik .mmp, który eksportuje aplikacja. Jego schemat jest opublikowany pod adresem github.com/blueblinkone/mmp-validator. Nowe elementy są zawsze dodawane wyłącznie jako opcjonalne, więc czytnik napisany dla starszego pliku nadal działa.
  • W planie Open Guest projekt gościa rozpoczęty przez API (POST /open-guest/projects) wlicza się do zużycia i budżetu Open Guest, tak jak projekt rozpoczęty z Twojego linku dla gościa.
  • W Open Guest sekcja Link dla gościa zawiera poradnik Open Guest API z kodem dla Twojego serwera i Twojej strony: serwer pobiera token przez POST /auth/token za pomocą klucza live i kieruje odwiedzającego do nowego, własnego projektu, z wypełnionymi jego danymi.
  • Osoby dołączają do Twojej organizacji tylko przez zaproszenie (POST /enterprise/invitations), tak jak na stronie Enterprise: kto nie ma konta, dostaje je i sam wybiera hasło. API nigdy nie tworzy konta ani nie ustawia hasła.
  • Usunięcie użytkownika z organizacji (POST /enterprise/users/{uid}/remove) zostawia mu konto; usunięcie go (DELETE /enterprise/users/{uid}) usuwa konto. W obu przypadkach jego praca zostaje w organizacji, w nowym folderze z jego nazwą, który współdzielą Twoi administratorzy.
  • Gdy gość prosi o Twoją wycenę, GET /open-guest/requests/{pid} odpowiada, kim jest, co napisał, co zmierzył i, z Produkty: Odczyt, samą wycenę.
  • W Open Guest tokeny rozpoczynają projekty gości dla Twoich odwiedzających. POST /auth/iframe/token, który loguje odwiedzającego w osadzonej mapie, jest przeznaczony dla kluczy Enterprise.
  • Produkty nigdy nie są usuwane przez API, tylko archiwizowane, a cena zakupu produktu nigdy nie jest zwracana.
  • Działki katastralne nie są częścią API.

Odpowiedzi i błędy#

Udane żądanie odpowiada statusem 200 i JSON-em (eksport .mmp odpowiada XML-em). Nieudane odpowiada statusem błędu i treścią w rodzaju:

{"errorCode": "insufficient_scope", "errorMessage": "This API key does not have the scope required for this endpoint"}
Status errorCode Co sprawdzić
400 invalid_body, invalid_uid, invalid_project_id, pagination_invalid_page_number, pagination_invalid_page_limit Brakuje wartości w żądaniu lub nie jest akceptowana, na przykład page i limit listy stronicowanej.
401 unauthorized_action Żądanie wysłano ze strony internetowej, której klucz nie dopuszcza, albo element nie należy do Twojego konta ani do kont Twoich członków.
402 budget_limit_reached Open Guest: osiągnięto limit budżetu, więc w tym okresie nie powstaną kolejne projekty gości.
403 invalid_api_key W nagłówku Authorization nie wysłano klucza albo klucz jest nieznany, unieważniony lub minęło 24 godziny po jego wymianie.
403 api_key_suspended Dostęp do API na Twoim koncie został zawieszony. Skontaktuj się z pomocą techniczną.
403 subscription_expired, invalid_subscription Subskrypcja nie jest aktywna albo jej plan nie ma API.
403 insufficient_scope Klucz nie ma dostępu, którego wymaga ten endpoint.
403 scope_not_in_plan Twój plan nie obejmuje tego punktu końcowego, na przykład sekcji Enterprise w planie Open Guest.
403 embed_needs_enterprise Osadzone mapy są częścią planu Enterprise. Klucz Open Guest otwiera tylko własne projekty gości.
404 not_found, project_not_found, user_not_found Element nie istnieje albo osoba nie jest użytkownikiem Twojej organizacji.
409 enterprise_add_users_limit Zapraszanie kogoś: wszystkie miejsca są zajęte, a miejsca automatyczne są wyłączone.
409 project_not_in_trash Zażądano przywrócenia lub trwałego usunięcia projektu, którego nie ma w koszu (Kosz).
429 too_many_requests Ponad 600 tokenów w ciągu godziny. Poczekaj chwilę i spróbuj ponownie.
500 server_error Nie udało się zrealizować żądania. Sprawdź wysłane identyfikatory, spróbuj ponownie, a jeśli problem się powtarza, skontaktuj się z pomocą techniczną.

Wypróbuj API na stronie Developer#

Deweloper > Wypróbuj API wysyła prawdziwe żądania z Twoim kluczem i pokazuje dokładnie, co wraca.

  1. Wybierz Produkcyjne lub Piaskownica.
  2. Wybierz Punkt końcowy, na przykład „Lista Twoich projektów”, „Pobierz pomiary” lub „Pobierz konto”. Lista oferuje endpointy, które obejmuje Twój plan.
  3. Wypełnij jego parametry. Projekt lub produkt wybierasz po nazwie spośród tych, które klucz może odczytać; tam, gdzie potrzebna jest osoba, Twoje własne konto jest wypełniane za Ciebie.
  4. Naciśnij Wyślij żądanie. Status i odpowiedź pojawią się poniżej.

Dostępne są tylko żądania odczytu, więc próbowanie niczego nie zmienia, a te żądania nie są wliczane do Twojego wykorzystania. Jeśli Twój klucz nie ma dostępu, którego wymaga endpoint, strona ostrzega, że odpowie 403.

Wypróbowanie API: wysłane żądanie i jego odpowiedź JSON

Webhooki#

Webhook informuje Twój serwer, gdy coś się dzieje, tak jak e-maile z powiadomieniami informują Ciebie. Webhooki są częścią planów Enterprise i Open Guest.

Skonfiguruj webhook#

W Deweloper > Webhooki:

  1. Wpisz swój Adres punktu końcowego: adres https:// w internecie. Adresy w sieciach prywatnych są odrzucane, a sprawdzane jest to ponownie przed każdym dostarczeniem.
  2. Zaznacz Zdarzenia, które chcesz otrzymywać (zobacz zdarzenia). Nowy endpoint zaczyna od zdarzeń, które wysyła Twój plan, a co najmniej jedno musi być zaznaczone.
  3. Naciśnij Zapisz. Za pierwszym razem strona pokazuje Twój Klucz podpisujący w całości. Skopiuj go wtedy: potem widać tylko jego ostatnie znaki.
  4. Naciśnij Wyślij zdarzenie testowe i wybierz zdarzenie.

Test wysyła próbkę tego zdarzenia, z wymyślonymi wartościami i "test": true w data, na zapisany endpoint, nawet gdy zdarzenie nie jest zaznaczone lub endpoint jest wyłączony. Aby zatrzymać wszystkie dostarczenia, naciśnij Usuń: endpoint i jego klucz tajny zostają usunięte.

Pod ustawieniami Dokumentacja webhooków zawiera wszystko, czego potrzebujesz do napisania strony odbierającej: nagłówki i treść, kod sprawdzający podpis w Node.js, Pythonie i PHP oraz przykładowe dane dla każdego zdarzenia.

Webhooki z endpointem i zdarzeniami, które odbiera

Co otrzymuje Twój serwer#

Każde zdarzenie to jedno żądanie POST na Twój endpoint, z treścią JSON:

{"id": "evt_3f9a1c2b7d4e5f60718293a4", "type": "project.created", "created": 1790000000000, "data": { ... }}

id jest unikalne dla każdego zdarzenia, created to moment zdarzenia w milisekundach od 1 stycznia 1970 (UTC), a zawartość data zależy od zdarzenia. Żądanie ma też te nagłówki:

Nagłówek Wartość
X-MMO-Event Nazwa zdarzenia, jako type w treści.
X-MMO-Delivery id zdarzenia.
X-MMO-Signature t=<milliseconds>,v1=<hex>: kiedy dostarczenie zostało podpisane i jego podpis.
User-Agent MeasureMapOnline-Webhooks/1
  • Odpowiedz statusem 2xx w ciągu 8 sekund, przed jakąkolwiek powolną pracą. Każdy inny status, przekierowanie lub przekroczenie czasu liczy się jako niepowodzenie.
  • Każde zdarzenie jest wysyłane raz i nigdy ponawiane. Sekcja pokazuje Ostatnie dostarczenie i Kolejne niepowodzenia.
  • Po 10 niepowodzeniach z rzędu endpoint zostaje wyłączony, a właściciel dostaje e-mail. Napraw serwer i naciśnij Zapisz, aby włączyć go ponownie.
  • Czasem zdarzenie przychodzi dwa razy lub w złej kolejności. Użyj id, aby ignorować powtórzenia, i created, aby ustawić zdarzenia w kolejności.

Sprawdź podpis#

Każdy, kto zna Twój adres, może na niego wysyłać żądania, więc sprawdzaj każde dostarczenie, zanim mu zaufasz:

  1. Podziel nagłówek X-MMO-Signature na przecinku na t i v1.
  2. Oblicz HMAC-SHA256 z t, kropki i surowej treści żądania, z Twoim kluczem tajnym do podpisywania jako kluczem, zapisany szesnastkowo.
  3. Porównaj wynik z v1 porównaniem w stałym czasie.
  4. Odrzuć dostarczenie, jeśli t różni się od bieżącego czasu o więcej niż 5 minut. t jest w milisekundach.

Używaj treści dokładnie takiej, w jakiej przyszła: sparsowanie JSON-a i zapisanie go z powrotem zmienia go, a podpis przestaje się zgadzać.

Zmień klucz tajny natychmiast wymienia klucz tajny i pokazuje nowy w całości, jednorazowo. Zaktualizuj serwer zaraz po wymianie.

Zdarzenia#

Zdarzenie Wysyłane, gdy
project.created Na Twoim koncie zostaje utworzony projekt. W aplikacji, przez API lub z osadzenia.
project.deleted Projekt zostaje trwale usunięty (przeniesienie do kosza się nie liczy).
project.comment.added Ktoś komentuje projekt — zwykle Twój klient odpisuje.
guest.project.created (Open Guest) Gość rozpoczyna projekt z Twojego linku lub przez API. Tylko gdy adres e-mail gościa jest znany.
guest.measurement.completed (Open Guest) Gość kończy pomiar i zostawia swoje dane kontaktowe.
budget.warning_reached (Open Guest) Wydatki rozliczane według zużycia przekraczają Twój próg ostrzegawczy.
budget.limit_reached (Open Guest) Wydatki rozliczane według zużycia osiągają Twój limit — kolejne projekty gości są odrzucane.
enterprise.user.created (Enterprise) Do Twojej organizacji zostaje dodane miejsce, także przez logowanie jednokrotne.

Nadal potrzebujesz pomocy?

Napisz do naszego zespołu wsparcia i opisz, co chciałeś zrobić. Zrzuty ekranu bardzo pomagają.

Napisz do wsparcia