Gå till innehållet

REST API

REST API kan ge dig information om växter och du kan uppdatera växter, samt söka i databasen. Det är fortfarande under uppbyggnad så fler funktioner kommer nog att komma under utvecklingens tid.

Använda API nyckeln

API nycken använder du i Authorization: Bearer-headern.

Växter

Hämta information från en växt

Du kan hämta information från växt genom ett GET anrop och du får tillbaka alla uppgifter om just den växten. Texten är som standard på engelska men du kan i din profil ställa in att du vill ha den på ditt valda språk. Då kommer dom förutom i engelska även levereras med en label på slutet med ditt valda språk. som exempel healthState skrivs ut i engelska men även en som heter healthStateLabel skriv ut i ditt valda språk. Nedan är ett svarsanrop som inkluderar svenska språket.

För att läsa en växt: GET /api/plants/1 där siffran 1 byts ut mot växtens id nummer, vilket du kan se när du är i en webbläsare.

Information på en växt med svenskt språk
{
  "language": "sv",
  "plant": {
    "id": 1,
    "name": "Roma Tomato",
    "variety": "San Marzano",
    "scientificName": "Solanum lycopersicum",
    "floweringStartMonth": "May",
    "floweringEndMonth": "September",
    "harvestStartMonth": "May",
    "harvestEndMonth": "September",
    "sowingStartMonth": "May",
    "sowingEndMonth": "September",
    "color": "#e66100",
    "mixedColors": false,
    "areaId": 1,
    "status": "Flowering",
    "planted": "2026-03-18",
    "photo": "/assets/plant-sample.jpg",
    "galleryPhotos": [
      "/assets/plant-sample.jpg"
    ],
    "notes": "Updated through the REST API.",
    "seedlingSowings": [
      {
        "id": 1783542817660,
        "title": "Nr 1",
        "count": 0,
        "note": "Första",
        "createdAt": "2026-07-08T20:33:37.660Z"
      }
    ],
    "assignedSeedBags": [],
    "statistics": [
      {
        "id": 1783695549270,
        "type": "fertilized",
        "date": "2026-07-10"
      },
      {
        "id": 1783608652069,
        "type": "watered",
        "date": "2026-07-09"
      }
    ],
    "lastWatered": "2026-07-09",
    "daysBetweenWatering": 1,
    "lastRepotted": "2026-03-20",
    "lastFertilized": "2026-07-10",
    "daysBetweenFertilizing": 13,
    "lifespan": "Annual",
    "cuttingMonth": "May",
    "purchased": "2026-03-12",
    "moistureLevel": 68,
    "lightLevel": "Sunny",
    "healthState": "Pest Infestation",
    "statusLabel": "Blommar",
    "lifespanLabel": "Ettårig",
    "cuttingMonthLabel": "Maj",
    "lightLevelLabel": "Soligt",
    "healthStateLabel": "Skadedjursangrepp"
  },
  "area": {
    "id": 1,
    "name": "North Raised Beds",
    "type": "Vegetable beds",
    "sunlight": "Full sun",
    "moisture": 72,
    "locationId": 1,
    "underRoof": false,
    "notes": "Tomatoes, basil, and peppers. Add compost every other month.",
    "typeLabel": "Grönsaksbäddar"
  }
}

Uppdatera information om en växt

För att uppdatera information om en specifik växt använder du PATCH /api/plants/1 och byter ut siffran 1 mot det korrekta id numret. Sedan skickar du ett JSON anrop med det du behöver uppdatera på växten. I exemplet nedan så uppdaterar vi hälsotillstånd och senast vattnad, och när du uppdaterar så alla status strängar så är det engelska som gäller.

Uppdatering av växt
{
  "healthState": "Pest Infestation",
  "lastWatered": "2026-07-05"
}

Växtdatabasen

Söka i databasen

Du kan söka i växtdatabasen för att få upp samtliga träffar på sökord. Det gör du med GET /api/plant-database?q=tomato och nedan kan du se hur ett svar kan se ut.

Sökning i databasen
{
  "query": "roma",
  "total": 1,
  "limit": 25,
  "offset": 0,
  "results": [
    {
      "id": 1,
      "name": "Roma Tomato",
      "variety": "San Marzano",
      "scientificName": "Solanum lycopersicum",
      "lifespan": "Annual",
      "cuttingMonth": "May",
      "lightLevel": "Sunny",
      "customInfo": "Reliable paste tomato with rich flavor. Start indoors and transplant after frost danger has passed.",
      "photo": "/assets/plant-sample.jpg",
      "photos": [
        "/assets/plant-sample.jpg"
      ],
      "author": {
        "id": 1,
        "name": "Unknown"
      },
      "updatedAt": "2026-07-08T16:34:25.512Z",
      "seedPacketLinksCount": 0
    }
  ]
}

Information om växt i databasen

Du kan få upp växt information från en växt i databasen genom GET /api/plant-database/1 och då kan ett svar se ut som nedan

Info om växt i databasen
{
  "entry": {
    "id": 1,
    "name": "Roma Tomato",
    "variety": "San Marzano",
    "scientificName": "Solanum lycopersicum",
    "growingFromSeed": "AA",
    "mixedColors": false,
    "lifespan": "Annual",
    "cuttingMonth": "May",
    "lightLevel": "Sunny",
    "customInfo": "Reliable paste tomato with rich flavor. Start indoors and transplant after frost danger has passed.",
    "photos": [
      "/assets/plant-sample.jpg"
    ],
    "userPhotos": [],
    "seedPacketLinks": [],
    "authorId": 1,
    "createdAt": "2026-04-18T09:00:00.000Z",
    "updatedAt": "2026-07-08T16:34:25.512Z",
    "author": {
      "id": 1,
      "name": "Unknown"
    }
  },
  "comments": []
}

Områden

Hämta information om ett område

Du kan hämta information om ett område genom ett GET anrop, och du får tillbaka alla uppgifter om området. Och som vanligt så är det dom som har Label som är översättning till det valda språket för API, dom används inte vid uppdatering av uppgifter.

  • För att läsa ett område: GET /api/areas/1 där siffran 1 byts ut mot områdets id nummer, vilket du kan se när du är i en webbläsare.
  • För att få alla områden: GET /api/areas
Info om område i databasen
{
  "language": "sv",
  "temperatureUnit": "celsius",
  "area": {
    "id": 1,
    "name": "North Raised Beds",
    "type": "Vegetable beds",
    "sunlight": "Indirect light",
    "temperature": 20,
    "showTemperature": true,
    "humidity": 20,
    "humidityTarget": 60,
    "showHumidity": true,
    "locationId": 1,
    "underRoof": false,
    "notes": "Tomatoes, basil, and peppers. Add compost every other month.",
    "typeLabel": "Grönsaksbäddar",
    "temperatureLabel": "20°C",
    "humidityLabel": "20% / target 60%",
    "humidityProgress": 33.33333333333333
  }
}

Uppdatera ett område

För att uppdatera information om ett specifikt område använder du PATCH /api/areas/1 och byter ut siffran 1 mot det korrekta id numret. Sedan skickar du ett JSON anrop med det du behöver uppdatera på området. I exemplet nedan så uppdaterar vi temperatur och luftfuktighet, och när du uppdaterar så alla status strängar så är det engelska som gäller.

Uppdatering av område
{
  "temperature": "32",
  "humidity": "35"
}

Uppdatera via Home Assistant

Ett exempel nedan som läggs till i configuration.yml i Home Assistant för att kunna uppdatera temperatur och luftfuktighet i ett område. Du måste ändra adressen till din OlsGrow adress för API, lägga till din API nyckel från OlsGrow och ställa in sensorernas namn. Sen gör du en automation som triggas exempel var 5 minut som ska köra send_temp.

Uppdatering av område
rest_command:
  send_temp:
    url: "https://youraddress/api/areas/1"
    method: PATCH
    headers:
      authorization: "Bearer <OLSGROW API KEY>"
      content-type: "application/json"
    payload: '{"temperature": "{{ states("sensor.tempsensor") }}","humidity": {{ states("sensor.humiditysensor") }} }'