Husvo

API-referens

Mätarna

Mätarställningar, förbrukning per månad och avvikelser.

Husets mätare med senaste avläsning och förbrukningen sedan den förra

GET /api/v1/houses/{houseId}/meters

operationId listMeters

  • Bearer-token
  • Kräver läsrätt i huset

Parametrar

NamnVarTypKrävs
houseId adressen integer ja

Exempel

curl -X GET "https://husvo.app/api/v1/houses/1/meters" \
  -H "Authorization: Bearer $TOKEN"

Svar

200 Klart · MeterListResponse
{
  "items": [
    {
      "id": 1,
      "kind": "text",
      "name": "text",
      "unit": "text",
      "readingCount": 1,
      "latestReading": {
        "id": 1,
        "meterId": 1,
        "date": "2026-11-13",
        "value": 1.5,
        "authorName": "text",
        "createdAt": "2026-11-13T08:00:00Z",
        "sincePrevious": {
          "from": "2026-11-13",
          "to": "2026-11-13",
          "days": 1,
          "amount": 1.5,
          "perDay": 1.5,
          "high": false,
          "reset": false
        }
      },
      "latestPeriod": {
        "from": "2026-11-13",
        "to": "2026-11-13",
        "days": 1,
        "amount": 1.5,
        "perDay": 1.5,
        "high": false,
        "reset": false
      }
    }
  ]
}

Fel, som problem+json (felkoderna):

  • 404Finns inte, eller inte för dig

Perioder med ovanligt hög förbrukning per dag, för alla mätare, senast först

GET /api/v1/houses/{houseId}/meters/anomalies

operationId listMeterAnomalies

  • Bearer-token
  • Kräver läsrätt i huset

Parametrar

NamnVarTypKrävs
houseId adressen integer ja

Exempel

curl -X GET "https://husvo.app/api/v1/houses/1/meters/anomalies" \
  -H "Authorization: Bearer $TOKEN"

Svar

200 Klart · MeterAnomalyListResponse
{
  "items": [
    {
      "meterId": 1,
      "meterName": "text",
      "unit": "text",
      "period": {
        "from": "2026-11-13",
        "to": "2026-11-13",
        "days": 1,
        "amount": 1.5,
        "perDay": 1.5,
        "high": false,
        "reset": false
      }
    }
  ],
  "highFactor": 1.5
}

Fel, som problem+json (felkoderna):

  • 404Finns inte, eller inte för dig

Alla avläsningar för en mätare, nyast först, med förbrukningen sedan förra

GET /api/v1/houses/{houseId}/meters/{meterId}/readings

operationId listMeterReadings

  • Bearer-token
  • Kräver läsrätt i huset

Parametrar

NamnVarTypKrävs
houseId adressen integer ja
meterId adressen integer ja

Exempel

curl -X GET "https://husvo.app/api/v1/houses/1/meters/1/readings" \
  -H "Authorization: Bearer $TOKEN"

Svar

200 Klart · MeterReadingListResponse
{
  "meter": {
    "id": 1,
    "kind": "text",
    "name": "text",
    "unit": "text",
    "readingCount": 1,
    "latestReading": {
      "id": 1,
      "meterId": 1,
      "date": "2026-11-13",
      "value": 1.5,
      "authorName": "text",
      "createdAt": "2026-11-13T08:00:00Z",
      "sincePrevious": {
        "from": "2026-11-13",
        "to": "2026-11-13",
        "days": 1,
        "amount": 1.5,
        "perDay": 1.5,
        "high": false,
        "reset": false
      }
    },
    "latestPeriod": {
      "from": "2026-11-13",
      "to": "2026-11-13",
      "days": 1,
      "amount": 1.5,
      "perDay": 1.5,
      "high": false,
      "reset": false
    }
  },
  "items": [
    {
      "id": 1,
      "meterId": 1,
      "date": "2026-11-13",
      "value": 1.5,
      "authorName": "text",
      "createdAt": "2026-11-13T08:00:00Z",
      "sincePrevious": {
        "from": "2026-11-13",
        "to": "2026-11-13",
        "days": 1,
        "amount": 1.5,
        "perDay": 1.5,
        "high": false,
        "reset": false
      }
    }
  ]
}

Fel, som problem+json (felkoderna):

  • 404Finns inte, eller inte för dig

Förbrukning per kalendermånad fram till senaste avläsningen. months är 1–60, tolv om det utelämnas

GET /api/v1/houses/{houseId}/meters/{meterId}/consumption

operationId getMeterConsumption

  • Bearer-token
  • Kräver läsrätt i huset

Parametrar

NamnVarTypKrävs
houseId adressen integer ja
meterId adressen integer ja
months frågesträngen integer nej

Exempel

curl -X GET "https://husvo.app/api/v1/houses/1/meters/1/consumption" \
  -H "Authorization: Bearer $TOKEN"

Svar

200 Klart · MeterConsumptionResponse
{
  "meter": {
    "id": 1,
    "kind": "text",
    "name": "text",
    "unit": "text",
    "readingCount": 1,
    "latestReading": {
      "id": 1,
      "meterId": 1,
      "date": "2026-11-13",
      "value": 1.5,
      "authorName": "text",
      "createdAt": "2026-11-13T08:00:00Z",
      "sincePrevious": {
        "from": "2026-11-13",
        "to": "2026-11-13",
        "days": 1,
        "amount": 1.5,
        "perDay": 1.5,
        "high": false,
        "reset": false
      }
    },
    "latestPeriod": {
      "from": "2026-11-13",
      "to": "2026-11-13",
      "days": 1,
      "amount": 1.5,
      "perDay": 1.5,
      "high": false,
      "reset": false
    }
  },
  "months": [
    {
      "year": 2026,
      "month": 1,
      "amount": 1.5,
      "coveredDays": 1,
      "daysInMonth": 1,
      "partial": false
    }
  ],
  "periods": [
    {
      "from": "2026-11-13",
      "to": "2026-11-13",
      "days": 1,
      "amount": 1.5,
      "perDay": 1.5,
      "high": false,
      "reset": false
    }
  ]
}

Fel, som problem+json (felkoderna):

  • 404Finns inte, eller inte för dig
  • 422Kontrollera uppgifterna

Lägg in en avläsning. Utan meterId skapas mätaren av slaget kind vid första avläsningen

POST /api/v1/houses/{houseId}/meter-readings

operationId addMeterReading

  • Bearer-token
  • Kräver redigeringsrätt i huset
  • Skrivtaket gäller
  • Tar Idempotency-Key

Parametrar

NamnVarTypKrävs
houseId adressen integer ja

Kropp application/json · AddMeterReadingBody

FältTypKrävs
meterId integer nej
kind string nej
name string nej
unit string nej
date datum nej
value number nej
{
  "meterId": 1,
  "kind": "text",
  "name": "text",
  "unit": "text",
  "date": "2026-11-13",
  "value": 1.5
}

Exempel

curl -X POST "https://husvo.app/api/v1/houses/1/meter-readings" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"meterId":1,"kind":"text","name":"text","unit":"text","date":"2026-11-13","value":1.5}'

Svar

201 Skapad · MeterReadingAddedResponse
{
  "reading": {
    "id": 1,
    "meterId": 1,
    "date": "2026-11-13",
    "value": 1.5,
    "authorName": "text",
    "createdAt": "2026-11-13T08:00:00Z",
    "sincePrevious": {
      "from": "2026-11-13",
      "to": "2026-11-13",
      "days": 1,
      "amount": 1.5,
      "perDay": 1.5,
      "high": false,
      "reset": false
    }
  },
  "meter": {
    "id": 1,
    "kind": "text",
    "name": "text",
    "unit": "text",
    "readingCount": 1,
    "latestReading": {
      "id": 1,
      "meterId": 1,
      "date": "2026-11-13",
      "value": 1.5,
      "authorName": "text",
      "createdAt": "2026-11-13T08:00:00Z",
      "sincePrevious": {
        "from": "2026-11-13",
        "to": "2026-11-13",
        "days": 1,
        "amount": 1.5,
        "perDay": 1.5,
        "high": false,
        "reset": false
      }
    },
    "latestPeriod": {
      "from": "2026-11-13",
      "to": "2026-11-13",
      "days": 1,
      "amount": 1.5,
      "perDay": 1.5,
      "high": false,
      "reset": false
    }
  },
  "meterCreated": false
}

Fel, som problem+json (felkoderna):

  • 403Inte tillåtet
  • 404Finns inte, eller inte för dig
  • 422Kontrollera uppgifterna

Ta bort en avläsning. Var den mätarens sista tas mätaren bort med den

DELETE /api/v1/houses/{houseId}/meter-readings/{readingId}

operationId deleteMeterReading

  • Bearer-token
  • Kräver redigeringsrätt i huset
  • Skrivtaket gäller

Parametrar

NamnVarTypKrävs
houseId adressen integer ja
readingId adressen integer ja

Exempel

curl -X DELETE "https://husvo.app/api/v1/houses/1/meter-readings/1" \
  -H "Authorization: Bearer $TOKEN"

Svar

200 Klart · MeterReadingDeletedResponse
{
  "id": 1,
  "meterRemoved": false
}

Fel, som problem+json (felkoderna):

  • 403Inte tillåtet
  • 404Finns inte, eller inte för dig
Sidan hakade upp sig.Ladda om🗙