{"openapi":"3.1.0","info":{"title":"Wattiplus API","version":"1.0.0","description":"P\u00f6rssis\u00e4hk\u00f6n hinnat Suomen hinta-alueella vartin tarkkuudella, halvimmat jaksot, s\u00e4hk\u00f6verkon tila ja kotiautomaation dokumentit. Maksuton, ei avaimia. Rajoitus 60 pyynt\u00f6\u00e4 minuutissa osoitetta kohti.","termsOfService":"https:\/\/wattiplus.fi\/kayttoehdot#rajapinta","contact":{"url":"https:\/\/wattiplus.fi\/rajapinta"}},"servers":[{"url":"https:\/\/wattiplus.fi\/api\/v1"}],"tags":[{"name":"Hinnat","description":"Hinnat sellaisenaan."},{"name":"Ajoitus","description":"Halvimmat jaksot ja vartit."},{"name":"Kotiautomaatio","description":"Yhden pyynn\u00f6n dokumentit sensoreille."},{"name":"Verkko","description":"Fingridin tiedot: p\u00e4\u00e4st\u00f6t, s\u00e4hk\u00f6pula, siirrot."},{"name":"Teksti","description":"Yksi arvo per vastaus pienille laitteille."},{"name":"Lataus","description":"Kalenteri ja CSV."}],"components":{"parameters":{"vat":{"name":"vat","in":"query","required":false,"description":"Hinnat arvonlis\u00e4veron kanssa (1) vai ilman (0, oletus). Kalenterisy\u00f6tteess\u00e4 oletus on 1.","schema":{"type":"integer","enum":[0,1]}},"margin":{"name":"margin","in":"query","required":false,"description":"Myyj\u00e4n marginaali snt\/kWh sis. alv, lis\u00e4t\u00e4\u00e4n jokaiseen hintaan kentt\u00e4\u00e4n total.","schema":{"type":"number","minimum":0,"maximum":50}},"transfer":{"name":"transfer","in":"query","required":false,"description":"Siirtomaksu snt\/kWh sis. alv, lis\u00e4t\u00e4\u00e4n kuten margin.","schema":{"type":"number","minimum":0,"maximum":50}},"after":{"name":"after","in":"query","required":false,"description":"Helsingin kellonaika HH:MM, jonka seuraavasta esiintym\u00e4st\u00e4 eteenp\u00e4in jaksoa etsit\u00e4\u00e4n.","schema":{"type":"string","example":"22:00"}},"before":{"name":"before","in":"query","required":false,"description":"Helsingin kellonaika HH:MM, johon menness\u00e4 jakson on p\u00e4\u00e4tytt\u00e4v\u00e4. Ratkeaa after-ajan j\u00e4lkeen, joten after=22:00&before=07:00 on t\u00e4m\u00e4 y\u00f6.","schema":{"type":"string","example":"07:00"}},"hours":{"name":"hours","in":"query","required":false,"description":"Jakson pituus tunteina, 0,25:st\u00e4 12:een vartin askelin. Oletus 3.","schema":{"type":"number","default":3}},"slots":{"name":"slots","in":"query","required":false,"description":"Hajautettujen halvimpien varttien yhteispituus tunteina. Lis\u00e4\u00e4 dokumenttiin slots-lohkon.","schema":{"type":"number"}},"threshold":{"name":"threshold","in":"query","required":false,"description":"Hintaraja snt\/kWh. Lis\u00e4\u00e4 dokumenttiin threshold-lohkon; verrataan total-hintaan jos margin tai transfer on annettu, muuten hintaan.","schema":{"type":"number","minimum":-50,"maximum":200}},"resolution":{"name":"resolution","in":"query","required":false,"description":"15 (oletus) tai 60: vartit tiivistet\u00e4\u00e4n tuntikeskiarvoiksi.","schema":{"type":"integer","enum":[15,60]}},"zone":{"name":"zone","in":"query","required":false,"description":"Hinta-alue: FI (oletus), SE3, EE, LV tai LT.","schema":{"type":"string","enum":["FI","SE3","EE","LV","LT"]}},"token":{"name":"token","in":"query","required":true,"description":"Tilin rajapinta-avain asetussivulta. Vaihtoehtoisesti Authorization: Bearer -otsake.","schema":{"type":"string"}}}},"paths":{"\/prices\/current":{"get":{"tags":["Hinnat"],"summary":"Hinta juuri nyt, vartin tarkkuudella, ja sen hintaluokka.","description":"","parameters":[{"$ref":"#\/components\/parameters\/vat"},{"$ref":"#\/components\/parameters\/margin"},{"$ref":"#\/components\/parameters\/transfer"}],"responses":{"200":{"description":"Kuluva vartti.","content":{"application\/json":{"schema":{"type":"object"}}}}}}},"\/prices\/{date}":{"get":{"tags":["Hinnat"],"summary":"Yhden p\u00e4iv\u00e4n kaikki vartit. P\u00e4iv\u00e4 on tanaan, huomenna tai 2026-09-06.","description":"","parameters":[{"name":"date","in":"path","required":true,"schema":{"type":"string"},"description":"tanaan, huomenna tai YYYY-MM-DD"},{"$ref":"#\/components\/parameters\/vat"},{"$ref":"#\/components\/parameters\/margin"},{"$ref":"#\/components\/parameters\/transfer"},{"$ref":"#\/components\/parameters\/resolution"},{"$ref":"#\/components\/parameters\/zone"}],"responses":{"200":{"description":"P\u00e4iv\u00e4n vartit.","content":{"application\/json":{"schema":{"type":"object"}}}},"404":{"description":"P\u00e4iv\u00e4\u00e4 ei ole tallennettu."}}}},"\/prices\/upcoming":{"get":{"tags":["Hinnat"],"summary":"Kaikki vartit t\u00e4st\u00e4 hetkest\u00e4 tallennetun horisontin loppuun.","description":"","parameters":[{"$ref":"#\/components\/parameters\/vat"},{"$ref":"#\/components\/parameters\/margin"},{"$ref":"#\/components\/parameters\/transfer"},{"$ref":"#\/components\/parameters\/after"},{"$ref":"#\/components\/parameters\/before"},{"$ref":"#\/components\/parameters\/resolution"}],"responses":{"200":{"description":"Edess\u00e4 olevat vartit.","content":{"application\/json":{"schema":{"type":"object"}}}}}}},"\/prices\/cheapest":{"get":{"tags":["Ajoitus"],"summary":"Halvin yhten\u00e4inen jakso, joka on viel\u00e4 edess\u00e4, sek\u00e4 sama t\u00e4lle p\u00e4iv\u00e4lle ja huomiselle.","description":"","parameters":[{"$ref":"#\/components\/parameters\/hours"},{"$ref":"#\/components\/parameters\/after"},{"$ref":"#\/components\/parameters\/before"},{"$ref":"#\/components\/parameters\/vat"},{"$ref":"#\/components\/parameters\/margin"},{"$ref":"#\/components\/parameters\/transfer"}],"responses":{"200":{"description":"Halvin jakso.","content":{"application\/json":{"schema":{"type":"object"}}}},"503":{"description":"Jakso ei mahdu tallennettuihin hintoihin."}}}},"\/prices\/cheapest-slots":{"get":{"tags":["Ajoitus"],"summary":"Halvimmat vartit hajautettuina, yhteens\u00e4 hours tuntia, ja niiden muodostamat yhten\u00e4iset jaksot.","description":"S\u00e4hk\u00f6auton ja l\u00e4mp\u00f6pumpun kysymys: laite voi pys\u00e4hty\u00e4 ja jatkaa, joten nelj\u00e4 halvinta tuntia ennen aamua ovat sille arvokkaammat kuin halvin yhten\u00e4inen nelj\u00e4.","parameters":[{"$ref":"#\/components\/parameters\/hours"},{"$ref":"#\/components\/parameters\/after"},{"$ref":"#\/components\/parameters\/before"},{"$ref":"#\/components\/parameters\/vat"},{"$ref":"#\/components\/parameters\/margin"},{"$ref":"#\/components\/parameters\/transfer"}],"responses":{"200":{"description":"Halvimmat vartit.","content":{"application\/json":{"schema":{"type":"object"}}}}}}},"\/homeassistant":{"get":{"tags":["Kotiautomaatio"],"summary":"Yksi litte\u00e4 dokumentti: hinta nyt, p\u00e4iv\u00e4n tunnusluvut, halvimmat jaksot, verkon tila ja molempien p\u00e4ivien vartit.","description":"","parameters":[{"$ref":"#\/components\/parameters\/vat"},{"$ref":"#\/components\/parameters\/margin"},{"$ref":"#\/components\/parameters\/transfer"},{"$ref":"#\/components\/parameters\/hours"},{"$ref":"#\/components\/parameters\/after"},{"$ref":"#\/components\/parameters\/before"},{"$ref":"#\/components\/parameters\/slots"},{"$ref":"#\/components\/parameters\/threshold"},{"$ref":"#\/components\/parameters\/resolution"}],"responses":{"200":{"description":"Dokumentti.","content":{"application\/json":{"schema":{"type":"object"}}}},"503":{"description":"Kuluvalle vartille ei ole hintaa."}}}},"\/me":{"get":{"tags":["Kotiautomaatio"],"summary":"Sama dokumentti tilin omalla tariffilla ja jokainen p\u00e4\u00e4ll\u00e4 oleva ilmoitus sensoriksi laskettuna.","description":"","parameters":[{"$ref":"#\/components\/parameters\/token"}],"responses":{"200":{"description":"Dokumentti.","content":{"application\/json":{"schema":{"type":"object"}}}},"401":{"description":"Avain puuttuu tai on v\u00e4\u00e4r\u00e4."}}}},"\/grid":{"get":{"tags":["Verkko"],"summary":"P\u00e4\u00e4st\u00f6kerroin, s\u00e4hk\u00f6pulan tila, kulutus, tuotanto, tuonti rajoittain ja puhtaimmat ennustetut jaksot.","description":"","parameters":[],"responses":{"200":{"description":"Verkon tila.","content":{"application\/json":{"schema":{"type":"object"}}}}}}},"\/prices\/current.txt":{"get":{"tags":["Teksti"],"summary":"Hinta nyt lukuna. Tariffin kanssa kokonaishinta.","description":"","parameters":[{"$ref":"#\/components\/parameters\/vat"},{"$ref":"#\/components\/parameters\/margin"},{"$ref":"#\/components\/parameters\/transfer"}],"responses":{"200":{"description":"Esimerkiksi 6.28","content":{"text\/plain":{"schema":{"type":"string"}}}}}}},"\/prices\/level.txt":{"get":{"tags":["Teksti"],"summary":"Hintaluokka nyt: negative, cheap, moderate, high tai extreme.","description":"","parameters":[],"responses":{"200":{"description":"Esimerkiksi moderate","content":{"text\/plain":{"schema":{"type":"string"}}}}}}},"\/prices\/cheapest.txt":{"get":{"tags":["Teksti"],"summary":"1 kun halvin hours-tunnin jakso on k\u00e4ynniss\u00e4, muuten 0.","description":"","parameters":[{"$ref":"#\/components\/parameters\/hours"},{"$ref":"#\/components\/parameters\/after"},{"$ref":"#\/components\/parameters\/before"}],"responses":{"200":{"description":"1 tai 0","content":{"text\/plain":{"schema":{"type":"string"}}}}}}},"\/prices\/below.txt":{"get":{"tags":["Teksti"],"summary":"1 kun hinta on alle rajan, muuten 0.","description":"","parameters":[{"$ref":"#\/components\/parameters\/threshold"},{"$ref":"#\/components\/parameters\/vat"},{"$ref":"#\/components\/parameters\/margin"},{"$ref":"#\/components\/parameters\/transfer"}],"responses":{"200":{"description":"1 tai 0","content":{"text\/plain":{"schema":{"type":"string"}}}}}}},"\/calendar\/cheapest.ics":{"get":{"tags":["Lataus"],"summary":"Halvin jakso t\u00e4n\u00e4\u00e4n ja huomenna kalenteritapahtumina.","description":"","parameters":[{"$ref":"#\/components\/parameters\/hours"},{"$ref":"#\/components\/parameters\/vat"}],"responses":{"200":{"description":"iCalendar","content":{"text\/calendar":{"schema":{"type":"string"}}}}}}},"\/prices\/{period}.csv":{"get":{"tags":["Lataus"],"summary":"Kuukausi (2026-08) tai p\u00e4iv\u00e4 (2026-08-15) CSV-muodossa, puolipisteell\u00e4 eroteltuna.","description":"","parameters":[{"name":"period","in":"path","required":true,"schema":{"type":"string"},"description":"YYYY-MM tai YYYY-MM-DD"},{"$ref":"#\/components\/parameters\/zone"}],"responses":{"200":{"description":"CSV","content":{"text\/csv":{"schema":{"type":"string"}}}}}}},"\/openapi.json":{"get":{"tags":["Kotiautomaatio"],"summary":"T\u00e4m\u00e4 kuvaus OpenAPI 3.1 -muodossa.","description":"","parameters":[],"responses":{"200":{"description":"OpenAPI-dokumentti.","content":{"application\/json":{"schema":{"type":"object"}}}}}}}}}