REST API-introduksjon
REST API-et er tilgjengelig på /v1/ og følger standard REST-konvensjoner. Alle svar er JSON med mindre annet er angitt.
Basis-URL
Section titled “Basis-URL”https://connect.wennproperty.com/v1/OpenAPI-spesifikasjon
Section titled “OpenAPI-spesifikasjon”Den fullstendige OpenAPI 3.1-spesifikasjonen er tilgjengelig på /v1/openapi.json. Du kan også utforske den interaktivt med Swagger UI.
Autentisering
Section titled “Autentisering”Alle endepunkter krever et Bearer-token. Se Autentisering.
Authorization: Bearer <ditt-token>Endepunkter
Section titled “Endepunkter”List prosjekter (paginert)
Section titled “List prosjekter (paginert)”GET /v1/projects/pageReturnerer en side med prosjekter for den autentiserte tenanten, sortert etter opprettelsestid (nyeste først). Dette er den anbefalte måten å liste prosjekter på — bruk dette for alle integrasjoner som skal skalere ut over en håndfull prosjekter.
Spørringsparametere:
| Parameter | Type | Beskrivelse |
|---|---|---|
cursor | string | Ugjennomsiktig markør fra en tidligere respons. Utelat for første side. |
limit | number | Sidestørrelse, 1..200. Standard 50. |
street | string | Filtrer på gate (ikke-skille mellom store/små bokstaver, prefiks). |
city | string | Filtrer på by (ikke-skille mellom store/små bokstaver, prefiks). |
postalCode | string | Filtrer på postnummer (eksakt treff). |
includeArchived | boolean | Inkluder arkiverte prosjekter. Standard false. |
Filtre AND-kombineres. Filtrene er ikke kodet inn i markøren — start pagineringen på nytt (utelat cursor) når filtrene endres.
Eksempel på respons:
{ "items": [ { "id": "abc-123", "createdAt": "2025-06-15T10:30:00Z", "createdBy": "user@example.com", "address": { "street": "Storgata 1", "postalCode": "0182", "city": "Oslo" }, "lastUpdated": "2025-06-20T14:00:00Z", "coverPhoto": { "photoId": "photo-1", "extension": "jpg" }, "archived": false } ], "nextCursor": "eyJpZCI6ImFiYy0xMjMifQ", "hasMore": true}For å hente neste side, send nextCursor tilbake som cursor:
GET /v1/projects/page?cursor=eyJpZCI6ImFiYy0xMjMifQ&limit=50Når hasMore er false (eller nextCursor er null), har du nådd siste side.
List prosjekter (legacy, upaginert)
Section titled “List prosjekter (legacy, upaginert)”GET /v1/projectsEksempel på respons:
{ "projects": [ { "id": "abc-123", "createdAt": "2025-06-15T10:30:00Z", "createdBy": "user@example.com", "address": { "street": "Storgata 1", "postalCode": "0182", "city": "Oslo" }, "lastUpdated": "2025-06-20T14:00:00Z", "coverPhoto": { "photoId": "photo-1", "extension": "jpg" }, "archived": false } ]}Hent prosjektdetaljer
Section titled “Hent prosjektdetaljer”GET /v1/projects/{projectId}Returnerer fullstendige detaljer for et enkelt prosjekt, inkludert:
- Adresse og metadata
- Forsidebilde og prosjektnivåbilder
- Rom med type, etasje, bilder og befaringsnotater
- Utendørsområder
- AI-generert sammendrag (hvis tilgjengelig)
Eksempel på respons:
{ "id": "abc-123", "createdAt": "2025-06-15T10:30:00Z", "createdBy": "user@example.com", "lastUpdated": "2025-06-20T14:00:00Z", "type": "inspection", "address": { "street": "Storgata 1", "postalCode": "0182", "city": "Oslo" }, "coverPhoto": { "photoId": "photo-1", "extension": "jpg" }, "photos": [ { "photoId": "photo-1", "extension": "jpg" }, { "photoId": "photo-2", "extension": "png" } ], "rooms": [ { "roomId": "room-1", "roomName": "Stue", "roomType": "LIVING_ROOM", "story": 1, "photos": [ { "photoId": "photo-3", "extension": "jpg" } ], "inspectionNotes": { "notes": "Slitasje på gulvbelegg ved inngang.", "lastUpdated": "2025-06-20T14:00:00Z" } } ], "outsideAreas": [], "aiSummary": { "text": "Leiligheten er i god stand med mindre slitasje i stue og bad.", "promptTitle": "Inspection Report", "generatedAt": "2025-06-20T15:00:00Z" }, "inspectionNotes": null, "archived": false}Hent prosjektbilde
Section titled “Hent prosjektbilde”GET /v1/projects/{projectId}/photos/{filename}Returnerer et bilde som binære bildedata. filename må inkludere filtypen (f.eks. photo-1.jpg).
Spørringsparametere:
| Parameter | Type | Beskrivelse |
|---|---|---|
width | integer | Skaleringsbredde i piksler |
height | integer | Skaleringshøyde i piksler |
Eksempel på forespørsel:
GET /v1/projects/abc-123/photos/photo-1.jpg?width=800Returnerer binære bildedata med riktig Content-Type-header (f.eks. image/jpeg).
Hent mål
Section titled “Hent mål”GET /v1/projects/{projectId}/measurementsReturnerer rommål utledet fra prosjektets 3D-modell: gulvareal, veggareal, listlengder og antall åpninger per rom, samt aggregerte totaler. Se Mål for fullstendig responsmodell.
Hent plantegning
Section titled “Hent plantegning”GET /v1/projects/{projectId}/floorplanReturnerer en 2D-plantegning som SVG-bilde, generert fra prosjektets 3D-modell. Se Plantegning for spørringsparametere og detaljer.
Hent takmålinger
Section titled “Hent takmålinger”GET /v1/projects/{projectId}/roofReturnerer takmålinger gruppert per bygning, basert på flyfoto/satellittbilder. Se Takmålinger for fullstendig responsmodell.
Hent takplan
Section titled “Hent takplan”GET /v1/projects/{projectId}/roof/svgReturnerer en 2D-visualisering av takgeometrien som SVG med rike dataattributter. Se Takplan for struktur og attributtreferanse.
Hent takfoto
Section titled “Hent takfoto”GET /v1/projects/{projectId}/roof/photoReturnerer et sammensatt flyfoto av takområdet som PNG-bilde. Se Takfoto for detaljer.
Hent veggmålinger
Section titled “Hent veggmålinger”GET /v1/projects/{projectId}/wallsReturnerer yttervegggeometri utledet fra takdata, gruppert per bygning. Hver vegg inkluderer type, kompassretning, areal og koblinger til takflater/kanter. Se Veggmålinger for fullstendig responsmodell.
Hent veggplan
Section titled “Hent veggplan”GET /v1/projects/{projectId}/walls/svgReturnerer en utbrettet bygningsfasade-SVG som viser alle yttervegger side om side. Se Veggplan for struktur og attributtreferanse.
Administrer delingslenker
Section titled “Administrer delingslenker”POST /v1/projects/{projectId}/sharesGET /v1/projects/{projectId}/sharesPUT /v1/projects/{projectId}/shares/{shareId}DELETE /v1/projects/{projectId}/shares/{shareId}Opprett, list, forleng og tilbakekall PIN-beskyttede delingslenker. Krever scope manage:shares. Se Delingslenker for fullstendig referanse.
Feilsvar
Section titled “Feilsvar”Feil følger et konsistent format:
{ "error": "Beskrivelse av hva som gikk galt"}Eksempler:
// 401 Uautorisert{ "error": "Unauthorized" }
// 404 Ikke funnet{ "error": "Project not found" }{ "error": "Photo not found" }| Status | Betydning |
|---|---|
| 401 | Uautorisert — manglende eller ugyldig token |
| 403 | Forbudt — tokenet mangler nødvendig tilgang |
| 404 | Ikke funnet |
| 500 | Intern serverfeil |