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.
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=trueile silin. Bir klasörü silmek, projelerini Çöp kutusu içine koyar. - Bir projenin ölçümlerinde bir şekil, ürünlerini sırayla
productIdsiçinde listeler;productIdbunların ilkidir. /projects/{pid}/mmp, uygulamanın dışa aktardığı.mmpdosyası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/tokenisteğ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.
- Canlı ya da Sandbox seçin.
- 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.
- 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.
- İ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.
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:
- Uç nokta URL'si alanına yazın: internette bir
https://adresi. Özel ağlardaki adresler reddedilir ve bu her teslimattan önce yeniden denetlenir. - İ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.
- 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.
- 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.
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çincreatedkullanın.
İmzayı denetleyin#
Adresinizi bilen herkes ona gönderi yapabilir; bu yüzden güvenmeden önce her teslimatı denetleyin:
X-MMO-Signaturebaşlığını virgüldentvev1olarak ayırın.- İ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. - Sonucu
v1ile sabit zamanlı bir karşılaştırmayla karşılaştırın. t, geçerli zamandan 5 dakikadan fazla uzaksa teslimatı reddedin.tmilisaniye 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.