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.
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;productIder det første av dem. /projects/{pid}/mmpgir 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/tokenmed 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.
- Velg Live eller Sandbox.
- Velg et Endepunkt, for eksempel «List opp prosjektene dine», «Hent målinger» eller «Hent kontoen». Listen tilbyr endepunktene planen din inneholder.
- 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.
- 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.
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:
- Skriv Endepunkt-URL: en
https://-adresse på internett. Adresser på private nettverk avvises, og dette kontrolleres på nytt før hver levering. - 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.
- Trykk Lagre. Første gang viser siden Signeringshemmelighet i sin helhet. Kopier den da: etterpå vises bare de siste tegnene.
- 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.
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
idfor å ignorere gjentakelser ogcreatedfor å 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:
- Del
X-MMO-Signature-headeren ved kommaet itogv1. - Beregn en HMAC-SHA256 av
t, et punktum og den rå forespørselsbodyen, med signeringshemmeligheten din som nøkkel, skrevet som heksadesimalt. - Sammenlign resultatet med
v1med en sammenligning i konstant tid. - Avvis leveringen hvis
tligger mer enn 5 minutter fra nåtiden.ter 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.