{"$defs":{"StatYearly":{"description":"Single-year breakdown of cashflow.","properties":{"year":{"title":"Year","type":"integer"},"yield_kwh":{"title":"Yield Kwh","type":"number"},"self_use_kwh":{"title":"Self Use Kwh","type":"number"},"feed_in_kwh":{"title":"Feed In Kwh","type":"number"},"revenue_self_use_eur":{"title":"Revenue Self Use Eur","type":"number"},"revenue_feed_in_eur":{"title":"Revenue Feed In Eur","type":"number"},"cost_maintenance_eur":{"title":"Cost Maintenance Eur","type":"number"},"cashflow_eur":{"title":"Cashflow Eur","type":"number"},"cumulative_cashflow_eur":{"title":"Cumulative Cashflow Eur","type":"number"}},"required":["year","yield_kwh","self_use_kwh","feed_in_kwh","revenue_self_use_eur","revenue_feed_in_eur","cost_maintenance_eur","cashflow_eur","cumulative_cashflow_eur"],"title":"StatYearly","type":"object"}},"description":"Schema for the response payload of POST /api/calculate. All field types and ranges are pydantic-validated server-side.","properties":{"plz":{"title":"Plz","type":"string"},"city":{"title":"City","type":"string"},"bundesland":{"title":"Bundesland","type":"string"},"orientation":{"enum":["N","NE","E","SE","S","SW","W","NW"],"title":"Orientation","type":"string"},"tilt_deg":{"title":"Tilt Deg","type":"integer"},"kwp":{"title":"Kwp","type":"number"},"area_m2":{"title":"Area M2","type":"number"},"consumption_kwh":{"title":"Consumption Kwh","type":"integer"},"with_storage":{"title":"With Storage","type":"boolean"},"storage_kwh":{"title":"Storage Kwh","type":"number"},"scenario":{"enum":["2026","2027"],"title":"Scenario","type":"string"},"annual_yield_kwh":{"title":"Annual Yield Kwh","type":"number"},"self_use_kwh":{"title":"Self Use Kwh","type":"number"},"self_use_pct":{"title":"Self Use Pct","type":"number"},"autarky_pct":{"title":"Autarky Pct","type":"number"},"investment_eur":{"title":"Investment Eur","type":"number"},"amortization_years":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Amortization Years"},"npv_20y_eur":{"title":"Npv 20Y Eur","type":"number"},"total_savings_20y_eur":{"title":"Total Savings 20Y Eur","type":"number"},"spitzenstunden_hours":{"title":"Spitzenstunden Hours","type":"integer"},"spitzenstunden_loss_eur_per_year":{"title":"Spitzenstunden Loss Eur Per Year","type":"number"},"cashflow":{"items":{"$ref":"#/$defs/StatYearly"},"title":"Cashflow","type":"array"},"assumptions":{"title":"Assumptions","type":"object"}},"required":["plz","city","bundesland","orientation","tilt_deg","kwp","area_m2","consumption_kwh","with_storage","storage_kwh","scenario","annual_yield_kwh","self_use_kwh","self_use_pct","autarky_pct","investment_eur","amortization_years","npv_20y_eur","total_savings_20y_eur","spitzenstunden_hours","spitzenstunden_loss_eur_per_year","cashflow","assumptions"],"title":"voltaplan CalculateResponse","type":"object","$schema":"https://json-schema.org/draft/2020-12/schema"}