Measure MapHjælp
Åbn Measure Map

REST API

Gør fra din egen software det, appen gør med dine projekter, mapper og produkter, din Enterprise-organisation og dine Open Guest-leads; prøv forespørgsler fra siden Udvikler, og modtag webhooks, når der sker noget.

REST API'et lader din egen software gøre det, appen gør: projekter og deres målinger, mapper og produktkataloget; med Enterprise din organisation, som siden Enterprise styrer den; med Open Guest dit gæstelink, gæsteprojekter og anmodninger om tilbud. Det svarer i JSON. Den fulde reference, med alle felter og eksempler, er API-dokumentationen; denne side er overblikket.

For at åbne dokumentationen fra appen går du til Udvikler > REST API og trykker på Se dokumentationen.

Afsnittet REST API på siden Udvikler

Base-URL#

Alle forespørgsler går til:

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

Godkendelse#

Send din API-nøgle, som den er, i headeren Authorization i hver forespørgsel. Opret nøglen på siden Udvikler: se API-nøgler.

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

Hver forespørgsel kontrolleres mod nøglens adgang (for eksempel Projekter Læs), dit abonnement og, for en forespørgsel sendt fra en webside, nøglens begrænsninger for websteder. Opbevar nøgler, der kan ændre data, på din server: se hold din nøgle sikker.

Live og sandbox#

Der er én base-URL til begge. Nøglen afgør det: en sandboxnøgle læser og skriver sandboxprojekter, -mapper og -produkter, som livenøgler aldrig ser. Din organisations brugere, pladser og teams er de samme i begge, så for at ændre dem skal du bruge en livenøgle. Gæsteprojekter oprettet med en sandboxnøgle faktureres aldrig, og sandboxprojekter kan ikke indlejres på dit websted. Tokens oplyser, hvilket miljø de tilhører.

Hvad API'et dækker#

Gruppe Endpoints Nødvendig nøgleadgang
Login-tokens POST /auth/token, POST /auth/iframe/token Indlejrede kort (på Open Guest Gæsteprojekter)
Konto Kontoens abonnement, pladser og nøgle med GET /account; API-forespørgslerne de seneste 30 dage og, på Open Guest, periodens gæsteprojekter og budget med GET /usage Konto: Læs
Projekter og mapper Dine projekter (GET /projects, Papirkurv med trashed=true) og mapper (GET /folders); hent et projekt, dets målinger (/projects/{pid}/data), dets kommentarer eller dets .mmp-fil (/projects/{pid}/mmp); opret, opdater og flyt projekter og mapper; flet projekter (POST /projects/merge); slet til Papirkurv og gendan (POST /projects/{pid}/restore); et projekts versioner (/projects/{pid}/versions); fjern og gendan kommentarer; del et projekt eller en mappe via e-mail (PUT /projects/{pid}/members) Projekter: Læs for at læse, Læs og ændr for at ændre
Projektfiler og kopier Eksportér et projekt i appens formater (POST /projects/{pid}/export) eller hent dets PDF-rapport (GET /projects/{pid}/pdf), begge som links, der virker i 24 timer; kopiér et projekt, eller lav en skabelon af det (POST /projects/{pid}/copy) Projekter: Læs; Læs og ændr for at kopiere. Priser i en rapport kræver Produkter: Læs
Overslag Et projekts overslag linje for linje (GET /projects/{pid}/estimate) Projekter og Produkter: Læs
Produkter GET /products, GET /products/{id}, opret, opdater og arkivér med DELETE /products/{id} Produkter: Læs eller Læs og ændr
Profil Profilen og e-mailindstillingerne (/account/profile); for en partners klient: hvem der betaler for planen, og invitationerne (/account/partner) Konto: Læs, Læs og ændr
Importer Importer filer i et projekt (POST /projects/{pid}/imports), som appens Importer gør: tilføj eller erstat, og følg den derefter Projekter: Læs og ændr
Nøgler og webhook Kontoens API-nøgler (/keys: vis, tilbagekald, websteder; aldrig hele nøglen, aldrig ud over den kaldende nøgles adgang) og dens webhook (/webhook) Udvikler: Læs, Læs og ændr
Partner Klienter og invitationer, en klients plan, licenser, budget, betaling og fakturaer (/partner) Klienter: Læs, Læs og ændr
Enterprise: brugere, invitationer, pladser, teams Brugere (/enterprise/users): list, ændr deres rolle eller oplysninger, deaktivér og aktivér, log ud overalt, fjern fra organisationen, slet, angiv deres teams, overdrag deres projekter. Invitationer (/enterprise/invitations): invitér, list, send igen, træk tilbage. Pladser (GET /enterprise/seats). Teams (/enterprise/teams). Alle organisationens projekter (GET /enterprise/projects) og projekter på teams Brugere: Læs eller Læs og ændr; projekterne kræver Projekter
Enterprise: organisationen Dens profil og politik (/enterprise/organization), single sign-on (GET /enterprise/sso), dens aktivitetslog (GET /enterprise/activity) og køb eller tilbagelevering af pladser (PUT /enterprise/seats) Organisation: Læs eller Læs og ændr
Open Guest Dit gæstelink (/open-guest/link: hent, opret eller erstat, sæt på pause, vælg dets mappe); gæsteprojekter (/open-guest/projects: list, start et til en besøgende, hent et); tilbudsanmodninger med tilbuddet (/open-guest/requests); denne periodes forbrug (GET /open-guest/usage) og budgettet (PUT /open-guest/budget) Gæster: Læs; Læs og ændr for at ændre

Nogle ting er godt at vide:

  • En nøgle når projekterne på sin egen konto og med Enterprise dem, der tilhører organisationens brugere.
  • Når du sletter et projekt, kommer det i Papirkurv, som i appen, og kun dets opretter kan gøre det; slet det for altid fra Papirkurv med forever=true. Når du sletter en mappe, kommer dens projekter i Papirkurv.
  • I et projekts målinger angiver en figur sine produkter i productIds i rækkefølge; productId er det første af dem.
  • /projects/{pid}/mmp giver den samme .mmp-fil, som appen eksporterer. Dens skema er udgivet på github.com/blueblinkone/mmp-validator. Nye elementer tilføjes kun som valgfrie, så en læser skrevet til en ældre fil bliver ved med at virke.
  • Med Open Guest tæller et gæsteprojekt, der er startet via API'et (POST /open-guest/projects), med i dit Open Guest-forbrug og -budget, ligesom et, der er startet fra dit gæstelink.
  • På Open Guest har afsnittet Gæstelink vejledningen Open Guest API med kode til din server og din side: din server henter et token fra POST /auth/token med din livenøgle og sender den besøgende til et nyt projekt til dem selv, med deres oplysninger udfyldt.
  • Folk kommer kun ind i din organisation via invitation (POST /enterprise/invitations), som på siden Enterprise: den, der ikke har en konto, får en og vælger selv sin adgangskode. API'et opretter aldrig en konto og angiver aldrig en adgangskode.
  • Når du fjerner en bruger (POST /enterprise/users/{uid}/remove), beholder vedkommende sin konto; når du sletter en (DELETE /enterprise/users/{uid}), slettes kontoen. Uanset hvad bliver det arbejde, vedkommende har lavet, hos organisationen i en ny mappe med vedkommendes navn, som dine administratorer deler.
  • Når en gæst beder om dit tilbud, svarer GET /open-guest/requests/{pid} med, hvem gæsten er, hvad vedkommende skrev, hvad vedkommende målte og, med Produkter: Læs, selve tilbuddet.
  • På Open Guest starter tokens gæsteprojekter til dine besøgende. POST /auth/iframe/token, som logger en besøgende ind på et indlejret kort, er til Enterprise-nøgler.
  • Produkter slettes aldrig via API'et, kun arkiveres, og et produkts kostpris returneres aldrig.
  • Matrikelparceller er ikke en del af API'et.

Svar og fejl#

En vellykket forespørgsel svarer med status 200 og JSON (eksporten af .mmp svarer med XML). En mislykket svarer med en fejlstatus og en tekst som denne:

{"errorCode": "insufficient_scope", "errorMessage": "This API key does not have the scope required for this endpoint"}
Status errorCode Hvad du skal tjekke
400 invalid_body, invalid_uid, invalid_project_id, pagination_invalid_page_number, pagination_invalid_page_limit En værdi i forespørgslen mangler eller accepteres ikke, for eksempel page og limit i en liste med sider.
401 unauthorized_action Forespørgslen blev sendt fra en webside på et websted, nøglen ikke tillader, eller emnet ligger ikke på din konto eller dine medlemmers.
402 budget_limit_reached Open Guest: din budgetgrænse er nået, så der kan ikke oprettes flere gæsteprojekter i denne periode.
403 invalid_api_key Der blev ikke sendt nogen nøgle i headeren Authorization, eller nøglen er ukendt, tilbagekaldt eller forbi sine 24 timer efter udskiftning.
403 api_key_suspended API-adgangen på din konto er suspenderet. Kontakt support.
403 subscription_expired, invalid_subscription Abonnementet er ikke aktivt, eller dets plan har ikke noget API.
403 insufficient_scope Nøglen har ikke den adgang, dette endpoint kræver.
403 scope_not_in_plan Dit abonnement indeholder ikke dette endpoint, for eksempel Enterprise-afsnittet med Open Guest.
403 embed_needs_enterprise Indlejrede kort er en del af Enterprise-abonnementet. En Open Guest-nøgle åbner kun sine egne gæsteprojekter.
404 not_found, project_not_found, user_not_found Emnet findes ikke, eller personen er ikke bruger i din organisation.
409 enterprise_add_users_limit Ved invitation af en person: alle pladser er optaget, og automatiske pladser er slået fra.
409 project_not_in_trash Gendan eller slet for altid blev anmodet for et projekt, der ikke er i Papirkurv.
429 too_many_requests Mere end 600 tokens i timen. Vent lidt, og prøv igen.
500 server_error Forespørgslen kunne ikke gennemføres. Tjek de ID'er, du sendte, prøv igen, og kontakt support, hvis det fortsætter.

Prøv API'et fra siden Udvikler#

Udvikler > Prøv API'en sender rigtige forespørgsler med din nøgle og viser præcis, hvad der kommer tilbage.

  1. Vælg Live eller Sandbox.
  2. Vælg et Endpoint, for eksempel "Vis dine projekter", "Hent målinger" eller "Hent kontoen". Listen tilbyder de endpoints, dit abonnement omfatter.
  3. Udfyld dets parametre. Et projekt eller et produkt vælges ved navn blandt dem, nøglen kan læse; hvor der skal bruges en person, er din egen konto udfyldt for dig.
  4. Tryk på Send anmodning. Status og svaret vises nedenunder.

Der tilbydes kun forespørgsler, der læser, så intet ændres ved at prøve, og forespørgslerne tæller ikke med i dit forbrug. Hvis din nøgle ikke har den adgang, et endpoint kræver, advarer siden dig om, at det vil svare 403.

Prøv API'et med en sendt forespørgsel og dens JSON-svar

Webhooks#

En webhook fortæller din server, når der sker noget, ligesom notifikationsmails fortæller dig det. Webhooks er en del af abonnementerne Enterprise og Open Guest.

Opsæt en webhook#

I Udvikler > Webhooks:

  1. Skriv din Endpoint-URL: en https://-adresse på internettet. Adresser på private netværk afvises, og det kontrolleres igen før hver levering.
  2. Afkryds de Hændelser, du vil have (se hændelser). Et nyt endpoint starter med de hændelser, dit abonnement sender, og mindst én skal være afkrydset.
  3. Tryk på Gem. Første gang viser siden din Signeringshemmelighed i sin helhed. Kopiér den dér: bagefter vises kun dens sidste tegn.
  4. Tryk på Send testhændelse, og vælg en hændelse.

En test sender et eksempel på den hændelse, med opdigtede værdier og "test": true i dens data, til dit gemte endpoint, selv når hændelsen ikke er afkrydset, eller endpointet er slået fra. For at stoppe alle leveringer skal du trykke på Fjern: endpointet og dets secret slettes.

Under indstillingerne har Webhook-reference det, du skal bruge for at skrive den modtagende side: headerne og body, kode der kontrollerer signaturen i Node.js, Python og PHP, og eksempeldata for hver hændelse.

Webhooks med et endpoint og de hændelser, det modtager

Hvad din server modtager#

Hver hændelse er ét POST til dit endpoint med en JSON-body:

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

id er unik for hver hændelse, created er, hvornår den skete, i millisekunder siden 1. januar 1970 (UTC), og hvad data indeholder, afhænger af hændelsen. Forespørgslen har også disse headere:

Header Værdi
X-MMO-Event Hændelsens navn, som type i body.
X-MMO-Delivery Hændelsens id.
X-MMO-Signature t=<milliseconds>,v1=<hex>: hvornår leveringen blev signeret, og dens signatur.
User-Agent MeasureMapOnline-Webhooks/1
  • Svar med en 2xx-status inden for 8 sekunder, før du går i gang med noget langsomt. Enhver anden status, en omdirigering eller en timeout tæller som en fejl.
  • Hver hændelse sendes én gang og forsøges aldrig igen. Afsnittet viser Seneste levering og Fejl i træk.
  • Efter 10 fejl i træk slås endpointet fra, og ejeren får en e-mail. Ret din server, og tryk på Gem for at slå det til igen.
  • En gang imellem kommer en hændelse to gange eller i forkert rækkefølge. Brug id til at ignorere gentagelser og created til at sætte hændelser i rækkefølge.

Kontrollér signaturen#

Alle, der kender din adresse, kan sende til den, så kontrollér hver levering, før du stoler på den:

  1. Del headeren X-MMO-Signature ved kommaet i t og v1.
  2. Beregn en HMAC-SHA256 af t, et punktum og den rå forespørgselsbody, med din signing secret som nøgle, skrevet som hexadecimal.
  3. Sammenlign resultatet med v1 med en sammenligning i konstant tid.
  4. Afvis leveringen, hvis t ligger mere end 5 minutter fra det aktuelle tidspunkt. t er i millisekunder.

Brug body præcis som den ankom: hvis du parser JSON'en og skriver den ud igen, ændres den, og signaturen passer ikke længere.

Roter hemmelighed erstatter secret med det samme og viser den nye i sin helhed, én gang. Opdater din server, så snart du roterer.

Hændelser#

Hændelse Sendes når
project.created Et projekt oprettes på din konto. I appen, via API'et eller fra et indlejret kort.
project.deleted Et projekt slettes permanent (at flytte et til papirkurven tæller ikke).
project.comment.added Nogen kommenterer et projekt – som regel din kunde, der svarer.
guest.project.created (Open Guest) En gæst starter et projekt fra dit link eller via API'en. Kun når gæstens e-mailadresse er kendt.
guest.measurement.completed (Open Guest) En gæst afslutter en måling og efterlader sine kontaktoplysninger.
budget.warning_reached (Open Guest) Det forbrugsbaserede forbrug overskrider din advarselsgrænse.
budget.limit_reached (Open Guest) Det forbrugsbaserede forbrug når din grænse – yderligere gæsteprojekter afvises.
enterprise.user.created (Enterprise) En plads tilføjes til din organisation, også via single sign-on.

Brug for mere hjælp?

Skriv til vores supportteam og fortæl, hvad du prøvede at gøre. Skærmbilleder hjælper.

Skriv til support