Husvo

API-referens

Material och inköp

Det en idé behöver köpas in, och inköpslistan för hela huset.

Husets inköpslista: det som inte är köpt, per idé. Klara och borttagna idéer är inte med

GET /api/v1/houses/{houseId}/shopping-list

operationId getShoppingList

  • 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/shopping-list" \
  -H "Authorization: Bearer $TOKEN"

Svar

200 Klart · ShoppingListResponse
{
  "groups": [
    {
      "ideaId": 1,
      "ideaTitle": "text",
      "roomName": "text",
      "items": [
        {
          "id": 1,
          "ideaId": 1,
          "text": "text",
          "amount": "text",
          "priceKr": 1,
          "bought": false,
          "createdAt": "2026-11-13T08:00:00Z"
        }
      ],
      "totalKr": 1,
      "unpricedCount": 1
    }
  ],
  "toBuyCount": 1,
  "totalKr": 1
}

Fel, som problem+json (felkoderna):

  • 404Finns inte, eller inte för dig

Materialet till en idé, med summan av raderna som har pris

GET /api/v1/houses/{houseId}/ideas/{ideaId}/materials

operationId listIdeaMaterials

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

Parametrar

NamnVarTypKrävs
houseId adressen integer ja
ideaId adressen integer ja

Exempel

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

Svar

200 Klart · MaterialListResponse
{
  "items": [
    {
      "id": 1,
      "ideaId": 1,
      "text": "text",
      "amount": "text",
      "priceKr": 1,
      "bought": false,
      "createdAt": "2026-11-13T08:00:00Z"
    }
  ],
  "totalKr": 1,
  "unpricedCount": 1,
  "toBuyCount": 1
}

Fel, som problem+json (felkoderna):

  • 404Finns inte, eller inte för dig

Lägg till en rad att köpa på en idé. Mängden är fri text, priset hela kronor för raden

POST /api/v1/houses/{houseId}/ideas/{ideaId}/materials

operationId addIdeaMaterial

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

Parametrar

NamnVarTypKrävs
houseId adressen integer ja
ideaId adressen integer ja

Kropp application/json · AddMaterialBody

FältTypKrävs
text string nej
amount string nej
priceKr integer nej
{
  "text": "text",
  "amount": "text",
  "priceKr": 1
}

Exempel

curl -X POST "https://husvo.app/api/v1/houses/1/ideas/1/materials" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"text":"text","amount":"text","priceKr":1}'

Svar

201 Skapad · MaterialDto
{
  "id": 1,
  "ideaId": 1,
  "text": "text",
  "amount": "text",
  "priceKr": 1,
  "bought": false,
  "createdAt": "2026-11-13T08:00:00Z"
}

Fel, som problem+json (felkoderna):

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

Ändra text, mängd eller pris på en rad. Utelämnade fält lämnas orörda

PATCH /api/v1/houses/{houseId}/ideas/{ideaId}/materials/{materialId}

operationId updateIdeaMaterial

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

Parametrar

NamnVarTypKrävs
houseId adressen integer ja
ideaId adressen integer ja
materialId adressen integer ja

Kropp application/json · PatchMaterialBody

FältTypKrävs
text string nej
amount string nej
priceKr integer nej
clearPrice boolean nej
{
  "text": "text",
  "amount": "text",
  "priceKr": 1,
  "clearPrice": false
}

Exempel

curl -X PATCH "https://husvo.app/api/v1/houses/1/ideas/1/materials/1" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"text":"text","amount":"text","priceKr":1,"clearPrice":false}'

Svar

200 Klart · MaterialDto
{
  "id": 1,
  "ideaId": 1,
  "text": "text",
  "amount": "text",
  "priceKr": 1,
  "bought": false,
  "createdAt": "2026-11-13T08:00:00Z"
}

Fel, som problem+json (felkoderna):

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

Ta bort en rad. Den går inte att få tillbaka

DELETE /api/v1/houses/{houseId}/ideas/{ideaId}/materials/{materialId}

operationId deleteIdeaMaterial

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

Parametrar

NamnVarTypKrävs
houseId adressen integer ja
ideaId adressen integer ja
materialId adressen integer ja

Exempel

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

Svar

204 Klart, inget innehåll

Inget innehåll.

Fel, som problem+json (felkoderna):

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

Bocka av en rad som köpt. Idempotent

PUT /api/v1/houses/{houseId}/ideas/{ideaId}/materials/{materialId}/bought

operationId markMaterialBought

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

Parametrar

NamnVarTypKrävs
houseId adressen integer ja
ideaId adressen integer ja
materialId adressen integer ja

Exempel

curl -X PUT "https://husvo.app/api/v1/houses/1/ideas/1/materials/1/bought" \
  -H "Authorization: Bearer $TOKEN"

Svar

200 Klart · MaterialDto
{
  "id": 1,
  "ideaId": 1,
  "text": "text",
  "amount": "text",
  "priceKr": 1,
  "bought": false,
  "createdAt": "2026-11-13T08:00:00Z"
}

Fel, som problem+json (felkoderna):

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

Ångra att en rad är köpt, så att den kommer tillbaka på inköpslistan. Idempotent

DELETE /api/v1/houses/{houseId}/ideas/{ideaId}/materials/{materialId}/bought

operationId unmarkMaterialBought

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

Parametrar

NamnVarTypKrävs
houseId adressen integer ja
ideaId adressen integer ja
materialId adressen integer ja

Exempel

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

Svar

200 Klart · MaterialDto
{
  "id": 1,
  "ideaId": 1,
  "text": "text",
  "amount": "text",
  "priceKr": 1,
  "bought": false,
  "createdAt": "2026-11-13T08:00:00Z"
}

Fel, som problem+json (felkoderna):

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