Measure MapHjelp
Åpne Measure Map

REST API

Gjør fra din egen programvare det appen gjør med prosjektene, mappene og produktene dine, Enterprise-organisasjonen din og Open Guest-leadene dine; prøv forespørsler fra siden Utvikler, og motta webhooks når noe skjer.

REST API-et lar din egen programvare gjøre det appen gjør: prosjekter og målingene deres, mapper og produktkatalogen; med Enterprise organisasjonen din, slik siden Enterprise styrer den; med Open Guest gjestelenken din, gjesteprosjekter og tilbudsforespørsler. Det svarer i JSON. Den fullstendige referansen, med alle felt og eksempler, er API-dokumentasjonen; denne siden er oversikten.

For å åpne dokumentasjonen fra appen går du til Utvikler > REST API og trykker Se dokumentasjon.

Delen REST API på siden Utvikler

Base-URL#

Alle forespørsler går til:

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

Autentisering#

Send API-nøkkelen din, uendret, i Authorization-headeren i hver forespørsel. Opprett nøkkelen på siden Utvikler: se API-nøkler.

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

Hver forespørsel kontrolleres mot nøkkelens tilgang (for eksempel Prosjekter Lese), abonnementet ditt og, for en forespørsel sendt fra en nettside, nøkkelens nettstedsbegrensninger. Hold nøkler som kan endre data, på serveren din: se hold nøkkelen din trygg.

Live og sandbox#

Det er én base-URL for begge. Nøkkelen avgjør: en sandbox-nøkkel leser og skriver sandbox-prosjekter, -mapper og -produkter, som live-nøkler aldri ser. Organisasjonens brukere, plasser og team er de samme i begge, så for å endre dem trenger du en live-nøkkel. Gjesteprosjekter laget med en sandbox-nøkkel faktureres aldri, og sandbox-prosjekter kan ikke bygges inn på nettstedet ditt. Tokens oppgir miljøet de tilhører.

Hva API-et dekker#

Gruppe Endepunkter Nøkkeltilgang som trengs
Påloggingstokens POST /auth/token, POST /auth/iframe/token Innebygde kart (på Open Guest, Gjesteprosjekter)
Konto Kontoens plan, plasser og nøkkel med GET /account; API-forespørslene de siste 30 dagene og, på Open Guest, periodens gjesteprosjekter og budsjett med GET /usage Konto: Lese
Prosjekter og mapper Prosjektene dine (GET /projects, Papirkurv med trashed=true) og mapper (GET /folders); hent et prosjekt, målingene (/projects/{pid}/data), kommentarene eller .mmp-filen (/projects/{pid}/mmp); opprett, oppdater og flytt prosjekter og mapper; slå sammen prosjekter (POST /projects/merge); slett til Papirkurv og gjenopprett (POST /projects/{pid}/restore); et prosjekts versjoner (/projects/{pid}/versions); fjern og gjenopprett kommentarer; del et prosjekt eller en mappe på e-post (PUT /projects/{pid}/members) Prosjekter: Lese for å lese, Lese og endre for å endre
Prosjektfiler og kopier Eksporter et prosjekt i appens formater (POST /projects/{pid}/export) eller hent PDF-rapporten (GET /projects/{pid}/pdf), begge som lenker som virker i 24 timer; kopier et prosjekt, eller lag en mal av det (POST /projects/{pid}/copy) Prosjekter: Lese; Lese og endre for å kopiere. Priser i en rapport krever Produkter: Lese
Kostnadsoverslag Et prosjekts overslag, linje for linje (GET /projects/{pid}/estimate) Prosjekter og Produkter: Lese
Produkter GET /products, GET /products/{id}, opprett, oppdater og arkiver med DELETE /products/{id} Produkter: Lese eller Lese og endre
Profil Profilen og e-postinnstillingene (/account/profile); for en partners klient: hvem som betaler planen, og invitasjonene (/account/partner) Konto: Lese, Lese og endre
Import Importer filer til et prosjekt (POST /projects/{pid}/imports), slik appens Importer gjør: legg til eller erstatt, og følg så med Prosjekter: Lese og endre
Nøkler og webhook Kontoens API-nøkler (/keys: list, tilbakekall, nettsteder; aldri hele nøkkelen, aldri utover tilgangen til nøkkelen som kaller) og webhooken (/webhook) Utvikler: Lese, Lese og endre
Partner Klienter og invitasjoner, en klients plan, lisenser, budsjett, betaling og fakturaer (/partner) Klienter: Lese, Lese og endre
Enterprise: brukere, invitasjoner, plasser, team Brukere (/enterprise/users): list, endre rolle eller opplysninger, deaktiver og aktiver, logg ut overalt, fjern fra organisasjonen, slett, angi team, overta prosjektene deres. Invitasjoner (/enterprise/invitations): inviter, list, send på nytt, trekk tilbake. Plasser (GET /enterprise/seats). Team (/enterprise/teams). Alle prosjekter i organisasjonen (GET /enterprise/projects) og prosjekter på team Brukere: Lese eller Lese og endre; prosjektene krever Prosjekter
Enterprise: organisasjonen Profilen og policyen (/enterprise/organization), single sign-on (GET /enterprise/sso), aktivitetsloggen (GET /enterprise/activity), og kjøp eller tilbakelevering av plasser (PUT /enterprise/seats) Organisasjon: Lese eller Lese og endre
Open Guest Gjestelenken din (/open-guest/link: hent, lag eller erstatt, sett på pause, velg mappen); gjesteprosjekter (/open-guest/projects: list, start ett for en besøkende, hent ett); tilbudsforespørsler med tilbudet (/open-guest/requests); bruken i denne perioden (GET /open-guest/usage) og budsjettet (PUT /open-guest/budget) Gjester: Lese; Lese og endre for å endre

Noen ting å vite:

  • En nøkkel når prosjektene på sin egen konto og, med Enterprise, prosjektene til organisasjonens brukere.
  • Å slette et prosjekt legger det i Papirkurv, som i appen, og bare den som opprettet det, kan gjøre det; slett det for godt fra Papirkurv med forever=true. Å slette en mappe legger prosjektene i den i Papirkurv.
  • I et prosjekts målinger lister en figur produktene sine i productIds, i rekkefølge; productId er det første av dem.
  • /projects/{pid}/mmp gir den samme .mmp-filen som appen eksporterer. Skjemaet er publisert på github.com/blueblinkone/mmp-validator. Nye elementer legges bare til som valgfrie, så en leser skrevet for en eldre fil fortsetter å fungere.
  • Med Open Guest teller et gjesteprosjekt som er startet via API-et (POST /open-guest/projects), med i Open Guest-bruken og -budsjettet ditt, som et som er startet fra gjestelenken din.
  • På Open Guest har delen Gjestelenke veiledningen Open Guest API, med kode for serveren og siden din: serveren din henter et token fra POST /auth/token med live-nøkkelen din og sender den besøkende til et nytt prosjekt av eget, med opplysningene deres utfylt.
  • Folk kommer bare inn i organisasjonen din via invitasjon (POST /enterprise/invitations), som på siden Enterprise: den som ikke har en konto, får en og velger selv passordet. API-et oppretter aldri en konto og setter aldri et passord.
  • Når du fjerner en bruker (POST /enterprise/users/{uid}/remove), beholder vedkommende kontoen; når du sletter en (DELETE /enterprise/users/{uid}), slettes kontoen. Uansett blir arbeidet vedkommende har laget, hos organisasjonen, i en ny mappe med navnet til vedkommende som administratorene dine deler.
  • Når en gjest ber om tilbudet ditt, svarer GET /open-guest/requests/{pid} med hvem gjesten er, hva vedkommende skrev, hva vedkommende målte og, med Produkter: Lese, selve tilbudet.
  • På Open Guest starter tokens gjesteprosjekter for de besøkende. POST /auth/iframe/token, som logger en besøkende på et innebygd kart, er for Enterprise-nøkler.
  • Produkter slettes aldri gjennom API-et, bare arkiveres, og et produkts kostpris returneres aldri.
  • Matrikkeltomter er ikke en del av API-et.

Svar og feil#

En vellykket forespørsel svarer med status 200 og JSON (.mmp-eksporten svarer med XML). En mislykket svarer med en feilstatus og en body som denne:

{"errorCode": "insufficient_scope", "errorMessage": "This API key does not have the scope required for this endpoint"}
Status errorCode Hva du bør sjekke
400 invalid_body, invalid_uid, invalid_project_id, pagination_invalid_page_number, pagination_invalid_page_limit En verdi i forespørselen mangler eller godtas ikke, for eksempel page og limit i en listet side.
401 unauthorized_action Forespørselen ble sendt fra en nettside på et nettsted nøkkelen ikke tillater, eller elementet er ikke på kontoen din eller medlemmenes.
402 budget_limit_reached Open Guest: budsjettgrensen din er nådd, så ingen flere gjesteprosjekter denne perioden.
403 invalid_api_key Ingen nøkkel ble sendt i Authorization-headeren, eller nøkkelen er ukjent, tilbakekalt eller utenfor de 24 timene etter at den ble byttet ut.
403 api_key_suspended API-tilgangen på kontoen din er suspendert. Kontakt brukerstøtten.
403 subscription_expired, invalid_subscription Abonnementet er ikke aktivt, eller planen har ikke API.
403 insufficient_scope Nøkkelen har ikke tilgangen dette endepunktet trenger.
403 scope_not_in_plan Planen din inneholder ikke dette endepunktet, for eksempel Enterprise-delen med Open Guest.
403 embed_needs_enterprise Innebygde kart er en del av Enterprise-planen. En Open Guest-nøkkel åpner bare sine egne gjesteprosjekter.
404 not_found, project_not_found, user_not_found Elementet finnes ikke, eller personen er ikke bruker i organisasjonen din.
409 enterprise_add_users_limit Ved invitasjon av noen: alle plasser er tatt, og automatiske plasser er slått av.
409 project_not_in_trash Gjenoppretting eller sletting for godt ble bedt om for et prosjekt som ikke er i Papirkurv.
429 too_many_requests Mer enn 600 tokens i løpet av en time. Vent litt og prøv igjen.
500 server_error Forespørselen kunne ikke fullføres. Sjekk ID-ene du sendte, prøv igjen, og kontakt brukerstøtten hvis det vedvarer.

Prøv API-et fra siden Utvikler#

Utvikler > Prøv API-et sender ekte forespørsler med nøkkelen din og viser nøyaktig hva som kommer tilbake.

  1. Velg Live eller Sandbox.
  2. Velg et Endepunkt, for eksempel «List opp prosjektene dine», «Hent målinger» eller «Hent kontoen». Listen tilbyr endepunktene planen din inneholder.
  3. Fyll inn parameterne. Et prosjekt eller et produkt velges med navn blant dem nøkkelen kan lese; der en person trengs, fylles din egen konto inn for deg.
  4. Trykk Send forespørsel. Statusen og svaret vises nedenfor.

Bare forespørsler som leser, tilbys, så ingenting endres ved å prøve, og disse forespørslene telles ikke i bruken din. Hvis nøkkelen din ikke har tilgangen et endepunkt trenger, advarer siden om at det vil svare 403.

Prøv API-et med en sendt forespørsel og JSON-svaret

Webhooks#

En webhook forteller serveren din når noe skjer, slik varslingse-postene forteller deg det. Webhooks er en del av planene Enterprise og Open Guest.

Sett opp en webhook#

I Utvikler > Webhooks:

  1. Skriv Endepunkt-URL: en https://-adresse på internett. Adresser på private nettverk avvises, og dette kontrolleres på nytt før hver levering.
  2. Kryss av for Hendelser du vil ha (se hendelser). Et nytt endepunkt starter med hendelsene planen din sender, og minst én må være avkrysset.
  3. Trykk Lagre. Første gang viser siden Signeringshemmelighet i sin helhet. Kopier den da: etterpå vises bare de siste tegnene.
  4. Trykk Send testhendelse og velg en hendelse.

En test sender et eksempel på den hendelsen, med oppdiktede verdier og "test": true i data, til det lagrede endepunktet ditt, selv når hendelsen ikke er avkrysset eller endepunktet er slått av. For å stoppe alle leveringer trykker du Fjern: endepunktet og hemmeligheten slettes.

Under innstillingene har Webhook-referanse det du trenger for å skrive mottakersiden: headerne og body, kode som kontrollerer signaturen i Node.js, Python og PHP, og eksempeldata for hver hendelse.

Webhooks med et endepunkt og hendelsene det mottar

Hva serveren din mottar#

Hver hendelse er én POST til endepunktet ditt, med en JSON-body:

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

id er unik for hver hendelse, created er når den skjedde i millisekunder siden 1. januar 1970 (UTC), og hva data inneholder, avhenger av hendelsen. Forespørselen har også disse headerne:

Header Verdi
X-MMO-Event Hendelsesnavnet, som type i body.
X-MMO-Delivery Hendelsens id.
X-MMO-Signature t=<milliseconds>,v1=<hex>: når leveringen ble signert, og signaturen.
User-Agent MeasureMapOnline-Webhooks/1
  • Svar med en 2xx-status innen 8 sekunder, før du gjør noe tregt arbeid. Alle andre statuser, en omdirigering eller en tidsavbrudd regnes som en feil.
  • Hver hendelse sendes én gang og forsøkes aldri på nytt. Delen viser Siste levering og Påfølgende feil.
  • Etter 10 feil på rad slås endepunktet av, og eieren får en e-post. Rett opp serveren din og trykk Lagre for å slå det på igjen.
  • Av og til kommer en hendelse to ganger eller i feil rekkefølge. Bruk id for å ignorere gjentakelser og created for å sette hendelsene i rekkefølge.

Kontroller signaturen#

Alle som kjenner adressen din, kan sende til den, så kontroller hver levering før du stoler på den:

  1. Del X-MMO-Signature-headeren ved kommaet i t og v1.
  2. Beregn en HMAC-SHA256 av t, et punktum og den rå forespørselsbodyen, med signeringshemmeligheten din som nøkkel, skrevet som heksadesimalt.
  3. Sammenlign resultatet med v1 med en sammenligning i konstant tid.
  4. Avvis leveringen hvis t ligger mer enn 5 minutter fra nåtiden. t er i millisekunder.

Bruk bodyen akkurat slik den kom: å parse JSON-en og skrive den ut igjen endrer den, og signaturen stemmer ikke lenger.

Roter hemmelighet bytter ut hemmeligheten med en gang og viser den nye i sin helhet, én gang. Oppdater serveren din så snart du roterer.

Hendelser#

Hendelse Sendes når
project.created Et prosjekt opprettes på kontoen din. I appen, gjennom API-et eller fra en innbygging.
project.deleted Et prosjekt slettes permanent (å flytte et til papirkurven teller ikke).
project.comment.added Noen kommenterer et prosjekt – vanligvis kunden din som svarer.
guest.project.created (Open Guest) En gjest starter et prosjekt fra lenken din eller via API-et. Bare når gjestens e-postadresse er kjent.
guest.measurement.completed (Open Guest) En gjest fullfører en måling og legger igjen kontaktopplysningene sine.
budget.warning_reached (Open Guest) Målt forbruk passerer varselgrensen din.
budget.limit_reached (Open Guest) Målt forbruk når grensen din – flere gjesteprosjekter avvises.
enterprise.user.created (Enterprise) En lisens legges til i organisasjonen din, også via single sign-on.

Trenger du mer hjelp?

Skriv til brukerstøtten og fortell hva du prøvde å gjøre. Skjermbilder hjelper.

Send e-post til brukerstøtte