Gå til innholdet

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.

https://connect.wennproperty.com/v1/

Den fullstendige OpenAPI 3.1-spesifikasjonen er tilgjengelig på /v1/openapi.json. Du kan også utforske den interaktivt med Swagger UI.

Alle endepunkter krever et Bearer-token. Se Autentisering.

Authorization: Bearer <ditt-token>
GET /v1/projects/page

Returnerer 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:

ParameterTypeBeskrivelse
cursorstringUgjennomsiktig markør fra en tidligere respons. Utelat for første side.
limitnumberSidestørrelse, 1..200. Standard 50.
streetstringFiltrer på gate (ikke-skille mellom store/små bokstaver, prefiks).
citystringFiltrer på by (ikke-skille mellom store/små bokstaver, prefiks).
postalCodestringFiltrer på postnummer (eksakt treff).
includeArchivedbooleanInkluder 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=50

Når hasMore er false (eller nextCursor er null), har du nådd siste side.

GET /v1/projects

Eksempel 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
}
]
}
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
}
GET /v1/projects/{projectId}/photos/{filename}

Returnerer et bilde som binære bildedata. filename må inkludere filtypen (f.eks. photo-1.jpg).

Spørringsparametere:

ParameterTypeBeskrivelse
widthintegerSkaleringsbredde i piksler
heightintegerSkaleringshøyde i piksler

Eksempel på forespørsel:

GET /v1/projects/abc-123/photos/photo-1.jpg?width=800

Returnerer binære bildedata med riktig Content-Type-header (f.eks. image/jpeg).

GET /v1/projects/{projectId}/measurements

Returnerer rommål utledet fra prosjektets 3D-modell: gulvareal, veggareal, listlengder og antall åpninger per rom, samt aggregerte totaler. Se Mål for fullstendig responsmodell.

GET /v1/projects/{projectId}/floorplan

Returnerer en 2D-plantegning som SVG-bilde, generert fra prosjektets 3D-modell. Se Plantegning for spørringsparametere og detaljer.

GET /v1/projects/{projectId}/roof

Returnerer takmålinger gruppert per bygning, basert på flyfoto/satellittbilder. Se Takmålinger for fullstendig responsmodell.

GET /v1/projects/{projectId}/roof/svg

Returnerer en 2D-visualisering av takgeometrien som SVG med rike dataattributter. Se Takplan for struktur og attributtreferanse.

GET /v1/projects/{projectId}/roof/photo

Returnerer et sammensatt flyfoto av takområdet som PNG-bilde. Se Takfoto for detaljer.

GET /v1/projects/{projectId}/walls

Returnerer yttervegggeometri utledet fra takdata, gruppert per bygning. Hver vegg inkluderer type, kompassretning, areal og koblinger til takflater/kanter. Se Veggmålinger for fullstendig responsmodell.

GET /v1/projects/{projectId}/walls/svg

Returnerer en utbrettet bygningsfasade-SVG som viser alle yttervegger side om side. Se Veggplan for struktur og attributtreferanse.

POST /v1/projects/{projectId}/shares
GET /v1/projects/{projectId}/shares
PUT /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.

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" }
StatusBetydning
401Uautorisert — manglende eller ugyldig token
403Forbudt — tokenet mangler nødvendig tilgang
404Ikke funnet
500Intern serverfeil