Measure MapYardım
Measure Map'i aç

REST API

Uygulamanın projelerinizle, klasörlerinizle ve ürünlerinizle, Enterprise kuruluşunuzla ve Open Guest potansiyel müşterilerinizle yaptığını kendi yazılımınızdan yapın, istekleri Geliştirici sayfasından deneyin ve bir şey olduğunda webhook alın.

REST API, kendi yazılımınızın uygulamanın yaptığını yapmasını sağlar: projeler ve ölçümleri, klasörler ve ürün kataloğu; Enterprise'ta kuruluşunuz, Enterprise sayfasının yönettiği şekliyle; Open Guest'te misafir bağlantınız, misafir projeleri ve teklif istekleri. JSON ile yanıt verir. Her alanı ve örneği içeren tam başvuru API dokümantasyonudur; bu sayfa ise genel bakıştır.

Dokümantasyonu uygulamadan açmak için Geliştirici > REST API yolunu izleyin ve Belgeleri gör düğmesine basın.

Geliştirici sayfasının REST API bölümü

Temel URL#

Her istek şuraya gider:

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

Kimlik doğrulama#

API anahtarınızı olduğu gibi, her isteğin Authorization başlığında gönderin. Anahtarı Geliştirici sayfasında oluşturun: bkz. API anahtarları.

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

Her istek; anahtarın erişimine (örneğin Projeler Okuma), aboneliğinize ve bir web sayfasından gönderilen istekler için anahtarın web sitesi kısıtlamalarına göre denetlenir. Veri değiştirebilen anahtarları sunucunuzda tutun: bkz. anahtarınızı güvende tutun.

Canlı ve sandbox#

İkisi için de tek bir temel URL vardır. Karar anahtara aittir: bir sandbox anahtarı, canlı anahtarların hiç görmediği sandbox projelerini, klasörlerini ve ürünlerini okur ve yazar. Kuruluşunuzun kullanıcıları, koltukları ve ekipleri ikisinde de aynıdır, bu yüzden bunları değiştirmek canlı anahtar gerektirir. Sandbox anahtarıyla oluşturulan misafir projeleri hiçbir zaman faturalandırılmaz ve sandbox projeleri web sitenize yerleştirilemez. Token'lar ait oldukları ortamı bildirir.

API neleri kapsar#

Grup Uç noktalar Gereken anahtar erişimi
Oturum açma token'ları POST /auth/token, POST /auth/iframe/token Gömülü haritalar (Open Guest'te Misafir projeleri)
Hesap GET /account ile hesabın planı, koltukları ve anahtarı; GET /usage ile son 30 günün API istekleri ve Open Guest'te dönemin misafir projeleri ile bütçesi Hesap: Okuma
Projeler ve klasörler Projeleriniz (GET /projects, trashed=true ile Çöp kutusu) ve klasörleriniz (GET /folders); bir projeyi, ölçümlerini (/projects/{pid}/data), yorumlarını veya .mmp dosyasını (/projects/{pid}/mmp) alma; proje ve klasör oluşturma, güncelleme ve taşıma; projeleri birleştirme (POST /projects/merge); Çöp kutusu içine silme ve geri yükleme (POST /projects/{pid}/restore); bir projenin sürümleri (/projects/{pid}/versions); yorumları kaldırma ve geri yükleme; bir projeyi veya klasörü e-postayla paylaşma (PUT /projects/{pid}/members) Projeler: okumak için Okuma, değiştirmek için Okuma ve değiştirme
Proje dosyaları ve kopyalar Bir projeyi uygulamanın biçimlerinde dışa aktarma (POST /projects/{pid}/export) veya PDF raporunu alma (GET /projects/{pid}/pdf), ikisi de 24 saat çalışan bağlantılar olarak; bir projeyi kopyalama veya ondan şablon yapma (POST /projects/{pid}/copy) Projeler: Okuma; kopyalamak için Okuma ve değiştirme. Rapordaki fiyatlar için Ürünler: Okuma gerekir
Teklifler Bir projenin teklifi, satır satır (GET /projects/{pid}/estimate) Projeler ve Ürünler: Okuma
Ürünler GET /products, GET /products/{id}, oluşturma, güncelleme ve DELETE /products/{id} ile arşivleme Ürünler: Okuma ya da Okuma ve değiştirme
Profil Profil ve e-posta ayarları (/account/profile); bir iş ortağının müşterisi için planını kimin ödediği ve davetleri (/account/partner) Hesap: Okuma, Okuma ve değiştirme
İçe aktarmalar Bir projeye dosya içe aktarma (POST /projects/{pid}/imports), uygulamadaki İçe aktar gibi: ekle veya değiştir, sonra takip et Projeler: Okuma ve değiştirme
Anahtarlar ve webhook Hesabın API anahtarları (/keys: listeleme, iptal, web siteleri; asla tamamı değil, asla çağıran anahtarın erişiminin ötesinde değil) ve webhook'u (/webhook) Geliştirici: Okuma, Okuma ve değiştirme
İş ortağı Müşteriler ve davetler, bir müşterinin planı, kullanıcı lisansları, bütçesi, ödemesi ve faturaları (/partner) Müşteriler: Okuma, Okuma ve değiştirme
Enterprise: kullanıcılar, davetler, koltuklar, ekipler Kullanıcılar (/enterprise/users): listeleme, rollerini veya bilgilerini değiştirme, devre dışı bırakma ve etkinleştirme, her yerden çıkış yaptırma, kuruluştan çıkarma, silme, ekiplerini ayarlama, projelerini devretme. Davetler (/enterprise/invitations): davet etme, listeleme, yeniden gönderme, geri çekme. Koltuklar (GET /enterprise/seats). Ekipler (/enterprise/teams). Kuruluştaki her proje (GET /enterprise/projects) ve ekiplerdeki projeler Kullanıcılar: Okuma veya Okuma ve değiştirme; projeler için Projeler gerekir
Enterprise: kuruluş Profili ve ilkesi (/enterprise/organization), çoklu oturum açma (GET /enterprise/sso), etkinlik günlüğü (GET /enterprise/activity) ve koltuk satın alma veya iade etme (PUT /enterprise/seats) Kuruluş: Okuma ya da Okuma ve değiştirme
Open Guest Misafir bağlantınız (/open-guest/link: alma, oluşturma veya değiştirme, duraklatma, klasörünü seçme); misafir projeleri (/open-guest/projects: listeleme, bir ziyaretçi için başlatma, birini alma); teklifle birlikte teklif istekleri (/open-guest/requests); bu dönemin kullanımı (GET /open-guest/usage) ve bütçe (PUT /open-guest/budget) Misafirler: Okuma; değiştirmek için Okuma ve değiştirme

Bilmeniz gereken birkaç şey:

  • Bir anahtar kendi hesabının projelerine ve Enterprise'ta kuruluşun kullanıcılarının projelerine ulaşır.
  • Bir projeyi silmek, uygulamadaki gibi onu Çöp kutusu içine koyar ve bunu yalnızca oluşturan kişi yapabilir; kalıcı olarak silmek için Çöp kutusu içinden forever=true ile silin. Bir klasörü silmek, projelerini Çöp kutusu içine koyar.
  • Bir projenin ölçümlerinde bir şekil, ürünlerini sırayla productIds içinde listeler; productId bunların ilkidir.
  • /projects/{pid}/mmp, uygulamanın dışa aktardığı .mmp dosyasının aynısını verir. Şeması github.com/blueblinkone/mmp-validator adresinde yayımlanmıştır. Yeni öğeler yalnızca isteğe bağlı olarak eklenir; bu yüzden eski bir dosya için yazılmış okuyucu çalışmaya devam eder.
  • Open Guest'te API ile başlatılan bir misafir projesi (POST /open-guest/projects), misafir bağlantınızdan başlatılan gibi Open Guest kullanımınıza ve bütçenize sayılır.
  • Open Guest'te Misafir bağlantısı bölümünde, sunucunuz ve sayfanız için kod içeren Open Guest API kılavuzu vardır: sunucunuz canlı anahtarınızla POST /auth/token isteğinden bir token alır ve ziyaretçiyi, bilgileri doldurulmuş, kendine ait yeni bir projeye gönderir.
  • İnsanlar kuruluşunuza yalnızca davetle katılır (POST /enterprise/invitations), Enterprise sayfasındaki gibi: hesabı olmayan birine hesap açılır ve parolasını kendisi seçer. API hiçbir zaman hesap oluşturmaz veya parola belirlemez.
  • Bir kullanıcıyı kuruluştan çıkarmak (POST /enterprise/users/{uid}/remove) hesabını bırakır; birini silmek (DELETE /enterprise/users/{uid}) hesabı siler. Her iki durumda da yaptığı çalışma kuruluşta kalır, yöneticilerinizin paylaştığı, adını taşıyan yeni bir klasörde.
  • Bir misafir teklifinizi istediğinde GET /open-guest/requests/{pid} kim olduğunu, ne yazdığını, ne ölçtüğünü ve Ürünler: Okuma ile birlikte teklifin kendisini yanıtlar.
  • Open Guest'te token'lar ziyaretçileriniz için misafir projeleri başlatır. Bir ziyaretçiyi yerleşik bir haritada oturum açtıran POST /auth/iframe/token, Enterprise anahtarları içindir.
  • Ürünler API ile hiçbir zaman silinmez, yalnızca arşivlenir ve bir ürünün maliyet fiyatı hiçbir zaman döndürülmez.
  • Kadastro parselleri API'nin parçası değildir.

Yanıtlar ve hatalar#

Başarılı bir istek 200 durumuyla ve JSON ile yanıtlanır (.mmp dışa aktarımı XML ile yanıtlanır). Başarısız bir istek, bir hata durumu ve şuna benzer bir gövdeyle yanıtlanır:

{"errorCode": "insufficient_scope", "errorMessage": "This API key does not have the scope required for this endpoint"}
Durum errorCode Neyi kontrol etmeli
400 invalid_body, invalid_uid, invalid_project_id, pagination_invalid_page_number, pagination_invalid_page_limit İstekteki bir değer eksik ya da kabul edilmiyor; örneğin sayfalı bir listenin page ve limit değerleri.
401 unauthorized_action İstek, anahtarın izin vermediği bir web sitesindeki web sayfasından gönderildi ya da öğe sizin ya da üyelerinizin hesabında değil.
402 budget_limit_reached Open Guest: bütçe sınırınıza ulaşıldı, bu dönem için daha fazla misafir projesi yok.
403 invalid_api_key Authorization başlığında anahtar gönderilmedi ya da anahtar bilinmiyor, iptal edilmiş veya değiştirildikten sonraki 24 saati geçmiş.
403 api_key_suspended Hesabınızdaki API erişimi askıya alındı. Destek ekibiyle iletişime geçin.
403 subscription_expired, invalid_subscription Abonelik etkin değil ya da planında API yok.
403 insufficient_scope Anahtar, bu uç noktanın gerektirdiği erişime sahip değil.
403 scope_not_in_plan Planınız bu uç noktayı içermiyor, örneğin Open Guest'te Enterprise bölümü.
403 embed_needs_enterprise Yerleşik haritalar Enterprise planının parçasıdır. Open Guest anahtarı yalnızca kendi misafir projelerini açar.
404 not_found, project_not_found, user_not_found Öğe yok veya kişi kuruluşunuzun kullanıcısı değil.
409 enterprise_add_users_limit Birini davet ederken: tüm koltuklar dolu ve otomatik koltuklar kapalı.
409 project_not_in_trash Çöp kutusu içinde olmayan bir proje için geri yükleme veya kalıcı silme istendi.
429 too_many_requests Saatte 600'den fazla token. Biraz bekleyip yeniden deneyin.
500 server_error İstek tamamlanamadı. Gönderdiğiniz kimlikleri kontrol edin, yeniden deneyin; sürerse destek ekibiyle iletişime geçin.

API'yi Geliştirici sayfasından deneyin#

Geliştirici > API'yi deneyin, anahtarınızla gerçek istekler gönderir ve geri dönenleri olduğu gibi gösterir.

  1. Canlı ya da Sandbox seçin.
  2. Bir Uç nokta seçin; örneğin "Projelerinizi listele", "Ölçümleri getir" ya da "Hesabı getir". Liste, planınızın içerdiği uç noktaları sunar.
  3. Parametrelerini doldurun. Bir proje ya da ürün, anahtarın okuyabildikleri arasından adıyla seçilir; bir kişi gerektiğinde kendi hesabınız sizin için doldurulur.
  4. İsteği gönder düğmesine basın. Durum ve yanıt aşağıda görünür.

Yalnızca okuyan istekler sunulur; bu yüzden denemekle hiçbir şey değişmez ve bu istekler kullanımınıza sayılmaz. Anahtarınız bir uç noktanın gerektirdiği erişime sahip değilse sayfa, 403 yanıtı vereceği konusunda sizi uyarır.

Gönderilmiş bir istek ve JSON yanıtıyla API'yi deneyin

Webhook'lar#

Webhook, bildirim e-postalarının size söylediği gibi, bir şey olduğunda sunucunuza haber verir. Webhook'lar Enterprise ve Open Guest planlarının parçasıdır.

Webhook kurun#

Geliştirici > Webhook'lar bölümünde:

  1. Uç nokta URL'si alanına yazın: internette bir https:// adresi. Özel ağlardaki adresler reddedilir ve bu her teslimattan önce yeniden denetlenir.
  2. İstediğiniz Olaylar olaylarını işaretleyin (bkz. olaylar). Yeni bir uç nokta, planınızın gönderdiği olaylarla başlar ve en az biri işaretli olmalıdır.
  3. Kaydet düğmesine basın. İlk seferde sayfa İmzalama gizli anahtarı değerinizi tam olarak gösterir. O zaman kopyalayın: sonrasında yalnızca son karakterleri gösterilir.
  4. Test olayı gönder düğmesine basın ve bir olay seçin.

Bir test, o olayın örneğini, uydurma değerlerle ve data içinde "test": true olacak şekilde, olay işaretli olmasa ya da uç nokta kapalı olsa bile kayıtlı uç noktanıza gönderir. Tüm teslimatları durdurmak için Kaldır düğmesine basın: uç nokta ve gizli anahtarı silinir.

Ayarların altında Webhook başvurusu, alıcı tarafı yazmak için gereken her şeyi içerir: başlıklar ve gövde, imzayı Node.js, Python ve PHP'de denetleyen kod ve her olay için örnek veriler.

Bir uç nokta ve aldığı olaylarla Webhook'lar

Sunucunuzun aldığı#

Her olay, uç noktanıza JSON gövdeli tek bir POST olarak gelir:

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

id her olay için benzersizdir, created olayın 1 Ocak 1970'ten (UTC) beri milisaniye cinsinden ne zaman gerçekleştiğidir ve data içeriği olaya göre değişir. İstek ayrıca şu başlıkları taşır:

Başlık Değer
X-MMO-Event Gövdedeki type gibi olay adı.
X-MMO-Delivery Olayın id değeri.
X-MMO-Signature t=<milisaniye>,v1=<hex>: teslimatın ne zaman imzalandığı ve imzası.
User-Agent MeasureMapOnline-Webhooks/1
  • Yavaş bir işe girişmeden önce, 8 saniye içinde 2xx durumuyla yanıt verin. Başka herhangi bir durum, yönlendirme ya da zaman aşımı başarısızlık sayılır.
  • Her olay bir kez gönderilir ve asla yeniden denenmez. Bölüm Son teslimat ve Art arda başarısızlıklar değerlerini gösterir.
  • Üst üste 10 başarısızlıktan sonra uç nokta kapatılır ve sahip bir e-posta alır. Sunucunuzu düzeltin ve yeniden açmak için Kaydet düğmesine basın.
  • Arada bir olay iki kez ya da sırasız gelir. Tekrarları yok saymak için id, olayları sıraya koymak için created kullanın.

İmzayı denetleyin#

Adresinizi bilen herkes ona gönderi yapabilir; bu yüzden güvenmeden önce her teslimatı denetleyin:

  1. X-MMO-Signature başlığını virgülden t ve v1 olarak ayırın.
  2. İmzalama gizli anahtarınızı anahtar olarak kullanarak, t, bir nokta ve ham istek gövdesinden oluşan metnin HMAC-SHA256 değerini onaltılık olarak hesaplayın.
  3. Sonucu v1 ile sabit zamanlı bir karşılaştırmayla karşılaştırın.
  4. t, geçerli zamandan 5 dakikadan fazla uzaksa teslimatı reddedin. t milisaniye cinsindendir.

Gövdeyi tam olarak geldiği gibi kullanın: JSON'u ayrıştırıp yeniden yazmak onu değiştirir ve imza artık eşleşmez.

Gizli anahtarı yenile, gizli anahtarı hemen değiştirir ve yenisini bir kez, tam olarak gösterir. Değiştirir değiştirmez sunucunuzu güncelleyin.

Olaylar#

Olay Ne zaman gönderilir
project.created Hesabınızda bir proje oluşturulur. Uygulamada, API ile ya da bir yerleştirmeden.
project.deleted Bir proje kalıcı olarak silinir (çöp kutusuna taşımak sayılmaz).
project.comment.added Biri bir projeye yorum yapar — genellikle müşteriniz yanıt verir.
guest.project.created (Open Guest) Bir misafir bağlantınızdan veya API üzerinden proje başlatır. Yalnızca misafirin e-posta adresi biliniyorsa.
guest.measurement.completed (Open Guest) Bir misafir ölçümü tamamlar ve iletişim bilgilerini bırakır.
budget.warning_reached (Open Guest) Kullanıma dayalı harcama uyarı eşiğinizi aşar.
budget.limit_reached (Open Guest) Kullanıma dayalı harcama limitinize ulaşır — yeni misafir projeleri reddedilir.
enterprise.user.created (Enterprise) Çoklu oturum açma dahil, kuruluşunuza bir kullanıcı lisansı eklenir.

Hâlâ yardıma mı ihtiyacınız var?

Destek ekibimize yazın ve ne yapmaya çalıştığınızı anlatın. Ekran görüntüleri yardımcı olur.

Destek ekibine e-posta gönder