{"openapi":"3.1.0","info":{"title":"pvperf","summary":"API-first, AI-ready PV performance model","description":"pvperf simulates a PV system at the weather file's time step and returns its energy yield and its loss diagram. Every request field carries its unit. Fractions travel as 0–1. Unknown keys are rejected with the field path. Send an API key as `Authorization: Bearer pvp_live_…`. `GET /api/me` shows the account of the key.","version":"2026.10"},"paths":{"/api/run":{"post":{"tags":["simulate"],"summary":"Simulate a PV system for one year of weather","description":"Where the service requires an account, a run is charged in units by the rules of `GET /api/pricing`. The answer's `billing` block gives the units, their reasons and the price. The default project is free.","operationId":"simulate_pv_system","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunIn"},"examples":{"default":{"summary":"The default request","value":{"site":{"latitude":39.804,"longitude":-89.8474,"elevation":189.0,"timezone":-6.0,"albedo_monthly":[0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2],"soiling_monthly":[0.06,0.05,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.04],"horizon_azimuths_deg":[],"horizon_elevations_deg":[],"use_horizon":false},"array":{"track_mode":"fixed","tilt_deg":35.0,"azimuth_deg":180.0,"gcr":0.5,"collector_width_m":4.0,"n_rows":100,"band_top_m":0.02,"band_bottom_m":0.02,"shade_mode":"electrical","string_steps":2,"cell_traverse_m":0.156,"fraction_for_electrical":1.0,"modules_per_string":30,"strings_per_inverter":300,"n_inverters":1},"iam":{"kind":"auto"},"thermal":{"u_c":29.0,"u_v":0.0,"absorptivity":0.9},"dc_losses":{"quality_loss":-0.005,"lid_loss":0.015,"module_mismatch_loss":0.02,"string_mismatch_loss":0.0015,"dc_wiring_loss_at_stc":0.015},"ac_losses":{"ac_wiring_loss_at_stc":0.007572,"mv_line_loss_at_stc":0.003782,"transformer_constant_loss":0.001,"transformer_loss_at_stc":0.01,"hv_transformer_loss_at_stc":0.0,"transmission_loss":0.0,"other_loss":0.0,"aux_kw":2.0,"aux_threshold_kw":2.0,"aux_night_kw":5.0,"grid_poi_limit_kw":0.0,"unavailability_loss":0.0,"power_factor":1.0,"pnom_apparent":true,"inverter_night_tare":true,"transformer_night_disconnect":false,"power_reference":"pnom_inverter"},"spectral":{"mode":"off"},"bifacial":null,"lifetime":{"analysis_period_years":1,"dc_degradation_rate":0.0},"storage":null,"weather":{"id":"met_0123456789ab"},"module":{"id":"trina-solar-tsm-600de20"},"inverter":{"id":"delta-electronics-pcs4300x-x01-us-690v"},"include_series":false}},"east_west":{"summary":"East-west ridges with a scene: the east_west scene example (1,680 modules) on ewf racking","value":{"site":{"latitude":39.804,"longitude":-89.8474,"elevation":189.0,"timezone":-6.0,"albedo_monthly":[0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2],"soiling_monthly":[0.06,0.05,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.04],"horizon_azimuths_deg":[],"horizon_elevations_deg":[],"use_horizon":false},"array":{"track_mode":"ewf","tilt_deg":10.0,"azimuth_deg":180.0,"gcr":0.83,"collector_width_m":2.278,"n_rows":100,"band_top_m":0.02,"band_bottom_m":0.02,"shade_mode":"electrical","string_steps":2,"cell_traverse_m":0.156,"fraction_for_electrical":1.0,"modules_per_string":30,"strings_per_inverter":56,"n_inverters":1,"inter_row_shading":true},"iam":{"kind":"auto"},"thermal":{"u_c":29.0,"u_v":0.0,"absorptivity":0.9},"dc_losses":{"quality_loss":-0.005,"lid_loss":0.015,"module_mismatch_loss":0.02,"string_mismatch_loss":0.0015,"dc_wiring_loss_at_stc":0.015},"ac_losses":{"ac_wiring_loss_at_stc":0.007572,"mv_line_loss_at_stc":0.003782,"transformer_constant_loss":0.001,"transformer_loss_at_stc":0.01,"hv_transformer_loss_at_stc":0.0,"transmission_loss":0.0,"other_loss":0.0,"aux_kw":2.0,"aux_threshold_kw":2.0,"aux_night_kw":5.0,"grid_poi_limit_kw":0.0,"unavailability_loss":0.0,"power_factor":1.0,"pnom_apparent":true,"inverter_night_tare":true,"transformer_night_disconnect":false,"power_reference":"pnom_inverter"},"spectral":{"mode":"off"},"bifacial":null,"lifetime":{"analysis_period_years":1,"dc_degradation_rate":0.0},"storage":null,"weather":{"id":"met_0123456789ab"},"module":{"id":"trina-solar-tsm-600de20"},"inverter":{"id":"delta-electronics-epcs-1200us-480v"},"include_series":false,"scene":{"version":2,"frame":{"axes":{"x":"east","y":"north","z":"up"},"azimuth_zero":"true_north","azimuth_direction":"clockwise","lengths":"unitless"},"origin":null,"types":[{"id":"ew","kind":"ewf","length":22.7,"width":2.278,"modules":40,"strings":2,"gap":0.3}],"placements":[{"id":"r1","type":"ew","x":0.0,"y":-0.0,"z":0.9,"azimuth_deg":180.0,"tilt_deg":10.0,"roll_deg":0.0},{"id":"r2","type":"ew","x":5.4,"y":-0.0,"z":0.9,"azimuth_deg":180.0,"tilt_deg":10.0,"roll_deg":0.0},{"id":"r3","type":"ew","x":10.8,"y":-0.0,"z":0.9,"azimuth_deg":180.0,"tilt_deg":10.0,"roll_deg":0.0},{"id":"r4","type":"ew","x":16.2,"y":-0.0,"z":0.9,"azimuth_deg":180.0,"tilt_deg":10.0,"roll_deg":0.0},{"id":"r5","type":"ew","x":21.6,"y":-0.0,"z":0.9,"azimuth_deg":180.0,"tilt_deg":10.0,"roll_deg":0.0},{"id":"r6","type":"ew","x":27.0,"y":-0.0,"z":0.9,"azimuth_deg":180.0,"tilt_deg":10.0,"roll_deg":0.0},{"id":"r7","type":"ew","x":32.4,"y":-0.0,"z":0.9,"azimuth_deg":180.0,"tilt_deg":10.0,"roll_deg":0.0},{"id":"r8","type":"ew","x":0.0,"y":-23.5,"z":0.9,"azimuth_deg":180.0,"tilt_deg":10.0,"roll_deg":0.0},{"id":"r9","type":"ew","x":5.4,"y":-23.5,"z":0.9,"azimuth_deg":180.0,"tilt_deg":10.0,"roll_deg":0.0},{"id":"r10","type":"ew","x":10.8,"y":-23.5,"z":0.9,"azimuth_deg":180.0,"tilt_deg":10.0,"roll_deg":0.0},{"id":"r11","type":"ew","x":16.2,"y":-23.5,"z":0.9,"azimuth_deg":180.0,"tilt_deg":10.0,"roll_deg":0.0},{"id":"r12","type":"ew","x":21.6,"y":-23.5,"z":0.9,"azimuth_deg":180.0,"tilt_deg":10.0,"roll_deg":0.0},{"id":"r13","type":"ew","x":27.0,"y":-23.5,"z":0.9,"azimuth_deg":180.0,"tilt_deg":10.0,"roll_deg":0.0},{"id":"r14","type":"ew","x":32.4,"y":-23.5,"z":0.9,"azimuth_deg":180.0,"tilt_deg":10.0,"roll_deg":0.0},{"id":"r15","type":"ew","x":0.0,"y":-47.0,"z":0.9,"azimuth_deg":180.0,"tilt_deg":10.0,"roll_deg":0.0},{"id":"r16","type":"ew","x":5.4,"y":-47.0,"z":0.9,"azimuth_deg":180.0,"tilt_deg":10.0,"roll_deg":0.0},{"id":"r17","type":"ew","x":10.8,"y":-47.0,"z":0.9,"azimuth_deg":180.0,"tilt_deg":10.0,"roll_deg":0.0},{"id":"r18","type":"ew","x":16.2,"y":-47.0,"z":0.9,"azimuth_deg":180.0,"tilt_deg":10.0,"roll_deg":0.0},{"id":"r19","type":"ew","x":21.6,"y":-47.0,"z":0.9,"azimuth_deg":180.0,"tilt_deg":10.0,"roll_deg":0.0},{"id":"r20","type":"ew","x":27.0,"y":-47.0,"z":0.9,"azimuth_deg":180.0,"tilt_deg":10.0,"roll_deg":0.0},{"id":"r21","type":"ew","x":32.4,"y":-47.0,"z":0.9,"azimuth_deg":180.0,"tilt_deg":10.0,"roll_deg":0.0},{"id":"r22","type":"ew","x":0.0,"y":-70.5,"z":0.9,"azimuth_deg":180.0,"tilt_deg":10.0,"roll_deg":0.0},{"id":"r23","type":"ew","x":5.4,"y":-70.5,"z":0.9,"azimuth_deg":180.0,"tilt_deg":10.0,"roll_deg":0.0},{"id":"r24","type":"ew","x":10.8,"y":-70.5,"z":0.9,"azimuth_deg":180.0,"tilt_deg":10.0,"roll_deg":0.0},{"id":"r25","type":"ew","x":16.2,"y":-70.5,"z":0.9,"azimuth_deg":180.0,"tilt_deg":10.0,"roll_deg":0.0},{"id":"r26","type":"ew","x":21.6,"y":-70.5,"z":0.9,"azimuth_deg":180.0,"tilt_deg":10.0,"roll_deg":0.0},{"id":"r27","type":"ew","x":27.0,"y":-70.5,"z":0.9,"azimuth_deg":180.0,"tilt_deg":10.0,"roll_deg":0.0},{"id":"r28","type":"ew","x":32.4,"y":-70.5,"z":0.9,"azimuth_deg":180.0,"tilt_deg":10.0,"roll_deg":0.0},{"id":"r29","type":"ew","x":0.0,"y":-94.0,"z":0.9,"azimuth_deg":180.0,"tilt_deg":10.0,"roll_deg":0.0},{"id":"r30","type":"ew","x":5.4,"y":-94.0,"z":0.9,"azimuth_deg":180.0,"tilt_deg":10.0,"roll_deg":0.0},{"id":"r31","type":"ew","x":10.8,"y":-94.0,"z":0.9,"azimuth_deg":180.0,"tilt_deg":10.0,"roll_deg":0.0},{"id":"r32","type":"ew","x":16.2,"y":-94.0,"z":0.9,"azimuth_deg":180.0,"tilt_deg":10.0,"roll_deg":0.0},{"id":"r33","type":"ew","x":21.6,"y":-94.0,"z":0.9,"azimuth_deg":180.0,"tilt_deg":10.0,"roll_deg":0.0},{"id":"r34","type":"ew","x":27.0,"y":-94.0,"z":0.9,"azimuth_deg":180.0,"tilt_deg":10.0,"roll_deg":0.0},{"id":"r35","type":"ew","x":32.4,"y":-94.0,"z":0.9,"azimuth_deg":180.0,"tilt_deg":10.0,"roll_deg":0.0},{"id":"r36","type":"ew","x":0.0,"y":-117.5,"z":0.9,"azimuth_deg":180.0,"tilt_deg":10.0,"roll_deg":0.0},{"id":"r37","type":"ew","x":5.4,"y":-117.5,"z":0.9,"azimuth_deg":180.0,"tilt_deg":10.0,"roll_deg":0.0},{"id":"r38","type":"ew","x":10.8,"y":-117.5,"z":0.9,"azimuth_deg":180.0,"tilt_deg":10.0,"roll_deg":0.0},{"id":"r39","type":"ew","x":16.2,"y":-117.5,"z":0.9,"azimuth_deg":180.0,"tilt_deg":10.0,"roll_deg":0.0},{"id":"r40","type":"ew","x":0.0,"y":-141.0,"z":0.9,"azimuth_deg":180.0,"tilt_deg":10.0,"roll_deg":0.0},{"id":"r41","type":"ew","x":5.4,"y":-141.0,"z":0.9,"azimuth_deg":180.0,"tilt_deg":10.0,"roll_deg":0.0},{"id":"r42","type":"ew","x":10.8,"y":-141.0,"z":0.9,"azimuth_deg":180.0,"tilt_deg":10.0,"roll_deg":0.0}],"objects":[{"kind":"prism","id":"building","vertices":[[42.8,-125.3,0.0,7.0],[62.8,-125.3,0.0,7.0],[62.8,-113.3,0.0,7.0],[42.8,-113.3,0.0,7.0]]},{"kind":"cylinder","id":"tree","x":-12.0,"y":-60.0,"z":0.0,"radius":3.0,"diameter":null,"height":12.0}],"outlines":[]}}}}}}},"responses":{"200":{"description":"The run's answer","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunAnswer"}}}},"202":{"description":"The run is running in the background: `run_id`, `status` `running`, `links` and, on a charged run, `billing`. Read it with `GET /v1/runs/{run_id}` (202 while it runs).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunAccepted"}}}},"4XX":{"description":"A problem (RFC 9457); `code` names it and `field` the offending key","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}},"security":[{"bearer":[]},{}]}},"/api/run/simple":{"post":{"tags":["simulate"],"summary":"Simulate a PV system from a location and a system size","description":"`latitude`, `longitude` and `system_capacity_kw` (or `modules` with `module_power_w`) are enough. Without `weather` the run uses the PVGIS typical year of the location. The module is the PVWatts DC model and the inverter a flat efficiency clipped at its AC nameplate; the other steps follow the pvperf path. The answer is that of `POST /api/run` plus `request`, the full request it ran (send it to `POST /api/run` to change anything), and `defaults_applied`, each value it assumed with its source. Charged in units like `POST /api/run`. Guide: `GET /api/docs/simple_run`.","operationId":"simulate_simple","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimpleRunIn"},"example":{"latitude":39.8,"longitude":-89.85,"modules":16,"module_power_w":500,"racking":"rooftop","tilt_deg":25,"inverter_ac_kw":7.6}}}},"responses":{"200":{"description":"The run's answer","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimpleRunAnswer"}}}},"202":{"description":"The run is running in the background: `run_id`, `status` `running`, `links` and, on a charged run, `billing`. Read it with `GET /v1/runs/{run_id}` (202 while it runs).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunAccepted"}}}},"4XX":{"description":"A problem (RFC 9457); `code` names it and `field` the offending key","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}},"security":[{"bearer":[]},{}]}},"/api/terms":{"get":{"tags":["docs"],"summary":"The Terms and Conditions, as markdown (header X-Terms-Version)","operationId":"get_terms","responses":{"200":{"description":"Successful Response"},"4XX":{"description":"A problem (RFC 9457); `code` names it and `field` the offending key","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/patch-notes":{"get":{"tags":["docs"],"summary":"What changed in each engine version, as markdown","operationId":"get_patch_notes","responses":{"200":{"description":"Successful Response"},"4XX":{"description":"A problem (RFC 9457); `code` names it and `field` the offending key","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/feedback":{"post":{"tags":["feedback"],"summary":"Send a bug report or feedback, with the run request it concerns","operationId":"send_feedback","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedbackIn"},"example":{"kind":"bug","text":"The loss diagram shows no soiling row although soiling is on.","run_id":"run_0123456789abcdef"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Send Feedback"}}}},"4XX":{"description":"A problem (RFC 9457); `code` names it and `field` the offending key","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}},"security":[{"bearer":[]},{}]}},"/api/runs":{"get":{"tags":["runs"],"summary":"Your stored runs, newest first","description":"50 a page; `next` is the `before` of the next page, null on the last.","operationId":"list_runs","parameters":[{"name":"before","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The run id the page starts after","title":"Before"},"description":"The run id the page starts after"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Runs"}}}},"4XX":{"description":"A problem (RFC 9457); `code` names it and `field` the offending key","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/runs/{run_id}":{"get":{"tags":["runs"],"summary":"One stored run","description":"The request as sent, the ids it referenced and what they resolved to, and the response. The hourly series is left out unless `include_series=true`. A run running in the background answers 202 with `status` `running`; one that failed answers 422 `run_failed` with the engine's message, and its charge is released.","operationId":"get_run","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}},{"name":"include_series","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Series"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Run"}}}},"202":{"description":"The run is still running in the background."},"4XX":{"description":"A problem (RFC 9457); `code` names it and `field` the offending key","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/runs/{run_id}/series.csv":{"get":{"tags":["runs"],"summary":"A stored run's hourly series as CSV","description":"One row per timestep: the timestamp, the response's series, then the PVsyst series, in the response's units.","operationId":"get_run_series_csv","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}}],"responses":{"200":{"description":"Successful Response"},"4XX":{"description":"A problem (RFC 9457); `code` names it and `field` the offending key","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/tree/{stage}":{"post":{"tags":["simulate"],"summary":"Score every model option of a stage against the caller's run","operationId":"score_model_tree","parameters":[{"name":"stage","in":"path","required":true,"schema":{"type":"string","title":"Stage"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunIn"},"example":{"site":{"latitude":39.804,"longitude":-89.8474,"elevation":189.0,"timezone":-6.0,"albedo_monthly":[0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2],"soiling_monthly":[0.06,0.05,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.04],"horizon_azimuths_deg":[],"horizon_elevations_deg":[],"use_horizon":false},"array":{"track_mode":"fixed","tilt_deg":35.0,"azimuth_deg":180.0,"gcr":0.5,"collector_width_m":4.0,"n_rows":100,"band_top_m":0.02,"band_bottom_m":0.02,"shade_mode":"electrical","string_steps":2,"cell_traverse_m":0.156,"fraction_for_electrical":1.0,"modules_per_string":30,"strings_per_inverter":300,"n_inverters":1},"iam":{"kind":"auto"},"thermal":{"u_c":29.0,"u_v":0.0,"absorptivity":0.9},"dc_losses":{"quality_loss":-0.005,"lid_loss":0.015,"module_mismatch_loss":0.02,"string_mismatch_loss":0.0015,"dc_wiring_loss_at_stc":0.015},"ac_losses":{"ac_wiring_loss_at_stc":0.007572,"mv_line_loss_at_stc":0.003782,"transformer_constant_loss":0.001,"transformer_loss_at_stc":0.01,"hv_transformer_loss_at_stc":0.0,"transmission_loss":0.0,"other_loss":0.0,"aux_kw":2.0,"aux_threshold_kw":2.0,"aux_night_kw":5.0,"grid_poi_limit_kw":0.0,"unavailability_loss":0.0,"power_factor":1.0,"pnom_apparent":true,"inverter_night_tare":true,"transformer_night_disconnect":false,"power_reference":"pnom_inverter"},"spectral":{"mode":"off"},"bifacial":null,"lifetime":{"analysis_period_years":1,"dc_degradation_rate":0.0},"storage":null,"weather":{"id":"met_0123456789ab"},"module":{"id":"trina-solar-tsm-600de20"},"inverter":{"id":"delta-electronics-pcs4300x-x01-us-690v"},"include_series":false}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Score Model Tree"}}}},"4XX":{"description":"A problem (RFC 9457); `code` names it and `field` the offending key","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}},"security":[{"bearer":[]},{}]}},"/api/tree/{stage}/describe":{"post":{"tags":["simulate"],"summary":"A stage's steps and paths as the request selects them, without running","operationId":"describe_model_tree","parameters":[{"name":"stage","in":"path","required":true,"schema":{"type":"string","title":"Stage"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunIn"},"example":{"site":{"latitude":39.804,"longitude":-89.8474,"elevation":189.0,"timezone":-6.0,"albedo_monthly":[0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2],"soiling_monthly":[0.06,0.05,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.04],"horizon_azimuths_deg":[],"horizon_elevations_deg":[],"use_horizon":false},"array":{"track_mode":"fixed","tilt_deg":35.0,"azimuth_deg":180.0,"gcr":0.5,"collector_width_m":4.0,"n_rows":100,"band_top_m":0.02,"band_bottom_m":0.02,"shade_mode":"electrical","string_steps":2,"cell_traverse_m":0.156,"fraction_for_electrical":1.0,"modules_per_string":30,"strings_per_inverter":300,"n_inverters":1},"iam":{"kind":"auto"},"thermal":{"u_c":29.0,"u_v":0.0,"absorptivity":0.9},"dc_losses":{"quality_loss":-0.005,"lid_loss":0.015,"module_mismatch_loss":0.02,"string_mismatch_loss":0.0015,"dc_wiring_loss_at_stc":0.015},"ac_losses":{"ac_wiring_loss_at_stc":0.007572,"mv_line_loss_at_stc":0.003782,"transformer_constant_loss":0.001,"transformer_loss_at_stc":0.01,"hv_transformer_loss_at_stc":0.0,"transmission_loss":0.0,"other_loss":0.0,"aux_kw":2.0,"aux_threshold_kw":2.0,"aux_night_kw":5.0,"grid_poi_limit_kw":0.0,"unavailability_loss":0.0,"power_factor":1.0,"pnom_apparent":true,"inverter_night_tare":true,"transformer_night_disconnect":false,"power_reference":"pnom_inverter"},"spectral":{"mode":"off"},"bifacial":null,"lifetime":{"analysis_period_years":1,"dc_degradation_rate":0.0},"storage":null,"weather":{"id":"met_0123456789ab"},"module":{"id":"trina-solar-tsm-600de20"},"inverter":{"id":"delta-electronics-pcs4300x-x01-us-690v"},"include_series":false}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Describe Model Tree"}}}},"4XX":{"description":"A problem (RFC 9457); `code` names it and `field` the offending key","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/defaults":{"get":{"tags":["simulate"],"summary":"A complete runnable request (the base case)","description":"A complete request body for `POST /api/run`: 5.4 MWp of fixed 35° sheds (9,000 modules, 30 per string × 300 strings) on one 4 MW central inverter in Springfield, Illinois, with its hourly weather inline and the module and inverter as library ids. The `_meta` key names the case and its sources; drop it before sending, because the run rejects unknown keys. Edit any section and send the rest unchanged.","operationId":"get_default_request","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Default Request"}}}},"4XX":{"description":"A problem (RFC 9457); `code` names it and `field` the offending key","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/library/modules":{"get":{"tags":["components"],"summary":"Library Modules","operationId":"search_modules","parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Substring of manufacturer, model or id","title":"Q"},"description":"Substring of manufacturer, model or id"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":200,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Search Modules"}}}},"4XX":{"description":"A problem (RFC 9457); `code` names it and `field` the offending key","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/library/inverters":{"get":{"tags":["components"],"summary":"Library Inverters","operationId":"search_inverters","parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":200,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Search Inverters"}}}},"4XX":{"description":"A problem (RFC 9457); `code` names it and `field` the offending key","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/parse-pan":{"post":{"tags":["components"],"summary":"Parse a PAN module file into the module section","operationId":"parse_pan_file","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_parse_pan_file"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Parse Pan File"}}}},"4XX":{"description":"A problem (RFC 9457); `code` names it and `field` the offending key","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/parse-ond":{"post":{"tags":["components"],"summary":"Parse an OND inverter file into the inverter section","operationId":"parse_ond_file","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_parse_ond_file"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Parse Ond File"}}}},"4XX":{"description":"A problem (RFC 9457); `code` names it and `field` the offending key","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/scene-examples":{"get":{"tags":["scene"],"summary":"Example scenes to start a 3D site from","description":"One entry per example: id, label, description, the counts of types, placements, objects and modules, `array_patch` (the racking and stringing changes the example assumes, a shallow merge into `array`; empty when it assumes none), `patch` (other sections it sets, section → fields, a shallow merge into each) and `notes` (what to know when it loads).","operationId":"list_scene_examples","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Response List Scene Examples"}}}},"4XX":{"description":"A problem (RFC 9457); `code` names it and `field` the offending key","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/scene-examples/{example_id}":{"get":{"tags":["scene"],"summary":"One example scene as a complete scene body","operationId":"get_scene_example","parameters":[{"name":"example_id","in":"path","required":true,"schema":{"type":"string","title":"Example Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Scene Example"}}}},"4XX":{"description":"A problem (RFC 9457); `code` names it and `field` the offending key","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/scene/validate":{"post":{"tags":["scene"],"summary":"Validate a scene body and summarise it","description":"Checks the schema and the ids and returns the scene as read, its counts and the parser's warnings (an unused type, a roll on a tracker, a non-convex prism). The origin distance to the site, the pitch check against the racking GCR and the module-total comparison need the site: `POST /api/run` reports them in `summary.warnings` or as a 422.","operationId":"validate_scene","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SceneIn"},"example":{"version":2,"types":[{"id":"trk","kind":"sat","length":60,"width":4.3,"modules":84,"strings":3}],"placements":[{"id":"t1","type":"trk","x":0,"y":0,"z":2,"azimuth_deg":180},{"id":"t2","type":"trk","x":7,"y":0,"z":2.3,"azimuth_deg":180}],"objects":[{"id":"tank","kind":"cylinder","x":20,"y":-15,"z":0,"radius":3,"height":8}],"outlines":[]}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SceneValidationOut"}}}},"4XX":{"description":"A problem (RFC 9457); `code` names it and `field` the offending key","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/schema/scene.json":{"get":{"tags":["scene"],"summary":"The JSON Schema of the scene section","description":"Generated from the same model as the OpenAPI document; the scene format (version 2) changes only by additions from here on.","operationId":"scene_json_schema","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Scene Json Schema"}}}},"4XX":{"description":"A problem (RFC 9457); `code` names it and `field` the offending key","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/schema/run.json":{"get":{"tags":["simulate"],"summary":"The JSON Schema of a run request","description":"Generated from the same model as the OpenAPI document.","operationId":"run_json_schema","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Run Json Schema"}}}},"4XX":{"description":"A problem (RFC 9457); `code` names it and `field` the offending key","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/scene/day":{"post":{"tags":["scene"],"summary":"The solved scene of one day: the sun, tracker angles, table shading, metrics","description":"Runs the scene engine on the weather file's timesteps of one day (`date`, MM-DD) and returns, per step, the sun position, the weather, the field's plane-of-array and effective irradiance and near-shading loss, each orientation bin's tracker rotation, and up to 2,000 tables each table's beam shaded fraction from the engine's projection of the rows and objects. The workbench's day review draws the shadows from these; not charged.","operationId":"solve_scene_day","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","pattern":"^\\d{2}-\\d{2}$","description":"The day, MM-DD","title":"Date"},"description":"The day, MM-DD"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunIn"},"example":{"site":{"latitude":39.804,"longitude":-89.8474,"elevation":189.0,"timezone":-6.0,"albedo_monthly":[0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2],"soiling_monthly":[0.06,0.05,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.04],"horizon_azimuths_deg":[],"horizon_elevations_deg":[],"use_horizon":false},"array":{"track_mode":"single_axis","tilt_deg":35.0,"azimuth_deg":180.0,"gcr":0.6142857142857142,"collector_width_m":4.3,"n_rows":100,"band_top_m":0.02,"band_bottom_m":0.02,"shade_mode":"electrical","string_steps":2,"cell_traverse_m":0.156,"fraction_for_electrical":1.0,"modules_per_string":28,"strings_per_inverter":6,"n_inverters":1,"inter_row_shading":true},"iam":{"kind":"auto"},"thermal":{"u_c":29.0,"u_v":0.0,"absorptivity":0.9},"dc_losses":{"quality_loss":-0.005,"lid_loss":0.015,"module_mismatch_loss":0.02,"string_mismatch_loss":0.0015,"dc_wiring_loss_at_stc":0.015},"ac_losses":{"ac_wiring_loss_at_stc":0.007572,"mv_line_loss_at_stc":0.003782,"transformer_constant_loss":0.001,"transformer_loss_at_stc":0.01,"hv_transformer_loss_at_stc":0.0,"transmission_loss":0.0,"other_loss":0.0,"aux_kw":2.0,"aux_threshold_kw":2.0,"aux_night_kw":5.0,"grid_poi_limit_kw":0.0,"unavailability_loss":0.0,"power_factor":1.0,"pnom_apparent":true,"inverter_night_tare":true,"transformer_night_disconnect":false,"power_reference":"pnom_inverter"},"spectral":{"mode":"off"},"bifacial":null,"lifetime":{"analysis_period_years":1,"dc_degradation_rate":0.0},"storage":null,"weather":{"id":"met_0123456789ab"},"module":{"id":"trina-solar-tsm-600de20"},"inverter":{"id":"delta-electronics-pcs4300x-x01-us-690v"},"include_series":false,"scene":{"version":2,"types":[{"id":"trk","kind":"sat","length":60,"width":4.3,"modules":84,"strings":3}],"placements":[{"id":"t1","type":"trk","x":0,"y":0,"z":2,"azimuth_deg":180},{"id":"t2","type":"trk","x":7,"y":0,"z":2.3,"azimuth_deg":180}],"objects":[{"id":"tank","kind":"cylinder","x":20,"y":-15,"z":0,"radius":3,"height":8}],"outlines":[]}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Solve Scene Day"}}}},"4XX":{"description":"A problem (RFC 9457); `code` names it and `field` the offending key","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}},"security":[{"bearer":[]},{}]}},"/api/demos":{"get":{"tags":["simulate"],"summary":"The demo runs: complete requests with stored results","operationId":"list_demo_runs","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Response List Demo Runs"}}}},"4XX":{"description":"A problem (RFC 9457); `code` names it and `field` the offending key","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/demos/{demo_id}":{"get":{"tags":["simulate"],"summary":"One demo run: its request and its stored result, without an account","description":"The demo's request (the body `POST /api/run` takes) and its result with the hourly series, as the workbench shows them. Computed once per engine version and stored; not charged and no account needed.","operationId":"get_demo_run","parameters":[{"name":"demo_id","in":"path","required":true,"schema":{"type":"string","title":"Demo Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"4XX":{"description":"A problem (RFC 9457); `code` names it and `field` the offending key","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/demos/{demo_id}/day":{"post":{"tags":["scene"],"summary":"One day of a scene demo, solved, without an account","description":"`POST /api/scene/day` on the demo's own request; not charged.","operationId":"solve_demo_day","parameters":[{"name":"demo_id","in":"path","required":true,"schema":{"type":"string","title":"Demo Id"}},{"name":"date","in":"query","required":true,"schema":{"type":"string","pattern":"^\\d{2}-\\d{2}$","description":"The day, MM-DD","title":"Date"},"description":"The day, MM-DD"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Solve Demo Day"}}}},"4XX":{"description":"A problem (RFC 9457); `code` names it and `field` the offending key","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/parse-scene":{"post":{"tags":["scene"],"summary":"Read the 3D scene of a PVsyst variant file (.VCx) into a scene body","description":"Reads the `pvShading` block of a PVsyst 8 variant file (UTF-8 with or without a byte-order mark, or cp1252) and returns a scene body, the racking fields the scene implies (`array_patch`, to merge into `array` before running), the conversion notes, the counts and the record kinds read.","operationId":"parse_pvsyst_scene","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_parse_pvsyst_scene"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParsedSceneOut"}}}},"4XX":{"description":"A problem (RFC 9457); `code` names it and `field` the offending key","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/parse-weather":{"post":{"tags":["weather"],"summary":"Parse a weather file (CSV, TMY or MET) into the weather section","description":"The file may be sent gzip-compressed (it is read when it starts with the bytes 1f 8b). A request to the service must stay under 6 MB, so a sub-hourly year of more than about 4 MB as text goes compressed.","operationId":"parse_weather_file","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_parse_weather_file"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Parse Weather File"}}}},"4XX":{"description":"A problem (RFC 9457); `code` names it and `field` the offending key","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/components":{"get":{"tags":["components"],"summary":"Components","operationId":"list_components","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Response List Components"}}}},"4XX":{"description":"A problem (RFC 9457); `code` names it and `field` the offending key","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/components/{component_id}":{"get":{"tags":["components"],"summary":"Component","operationId":"get_component","parameters":[{"name":"component_id","in":"path","required":true,"schema":{"type":"string","title":"Component Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Component"}}}},"4XX":{"description":"A problem (RFC 9457); `code` names it and `field` the offending key","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/estimate/site-monthly":{"post":{"tags":["weather"],"summary":"Snow-aware monthly albedo and soiling from monthly mean temperature","operationId":"estimate_site_monthly","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SiteMonthlyIn"},"example":{"t_mean_monthly_c":[-3.2,-0.8,5.1,11.6,17.4,22.8,24.6,23.5,19.5,12.8,5.9,-0.6]}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Estimate Site Monthly"}}}},"4XX":{"description":"A problem (RFC 9457); `code` names it and `field` the offending key","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/iam-curve":{"post":{"tags":["simulate"],"summary":"The beam IAM curve a run would apply","operationId":"iam_curve","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IAMCurveIn"},"example":{"iam":{"kind":"auto"},"module":{}}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Iam Curve"}}}},"4XX":{"description":"A problem (RFC 9457); `code` names it and `field` the offending key","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/weather/tmy":{"get":{"tags":["weather"],"summary":"A typical year of hourly weather for a location, from NSRDB or PVGIS","description":"The typical meteorological year at the coordinates rounded to 0.01°, in the shape of POST /api/parse-weather: the weather section and its metadata. In the Americas (the GOES satellites' coverage) it is the NSRDB GOES TMY v4 (satellite-derived, labelled in the location's standard time); elsewhere, or where NSRDB has no year, the PVGIS 5.3 TMY (European Commission, Joint Research Centre), and `meta.notes` says why. `meta.source` and `meta.radiation_db` name the source. `meta.id` is the stored id; a request uses it as `\"weather\": {\"id\": …}`. Fetched once per location and source and stored. Not charged; no account needed. One address may fetch up to 30 new locations an hour (429 `rate_limited` beyond); stored locations are not limited.","operationId":"fetch_typical_year","parameters":[{"name":"latitude","in":"query","required":true,"schema":{"type":"number","maximum":90,"minimum":-90,"description":"Latitude, ° (north positive)","title":"Latitude"},"description":"Latitude, ° (north positive)"},{"name":"longitude","in":"query","required":true,"schema":{"type":"number","maximum":180,"minimum":-180,"description":"Longitude, ° (east positive)","title":"Longitude"},"description":"Longitude, ° (east positive)"},{"name":"fields","in":"query","required":false,"schema":{"enum":["all","meta"],"type":"string","description":"`meta` answers the metadata alone (the id and provenance, about 1 KB) without the 8,760 rows","default":"all","title":"Fields"},"description":"`meta` answers the metadata alone (the id and provenance, about 1 KB) without the 8,760 rows"},{"name":"source","in":"query","required":false,"schema":{"enum":["auto","nsrdb","pvgis"],"type":"string","description":"`auto` (NSRDB in the Americas, else PVGIS), `nsrdb` or `pvgis`","default":"auto","title":"Source"},"description":"`auto` (NSRDB in the Americas, else PVGIS), `nsrdb` or `pvgis`"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Fetch Typical Year"}}}},"4XX":{"description":"A problem (RFC 9457); `code` names it and `field` the offending key","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/geo/horizon":{"get":{"tags":["weather"],"summary":"Horizon profile from PVGIS (48 points at 7.5°)","operationId":"fetch_horizon","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","maximum":90,"minimum":-90,"title":"Lat"}},{"name":"lon","in":"query","required":true,"schema":{"type":"number","maximum":180,"minimum":-180,"title":"Lon"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Fetch Horizon"}}}},"4XX":{"description":"A problem (RFC 9457); `code` names it and `field` the offending key","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/geo/geocode":{"get":{"tags":["weather"],"summary":"Address search through OpenStreetMap Nominatim (up to five matches)","operationId":"geocode","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":2,"maxLength":200,"title":"Q"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Geocode"}}}},"4XX":{"description":"A problem (RFC 9457); `code` names it and `field` the offending key","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/docs":{"get":{"tags":["docs"],"summary":"Docs Manifest","operationId":"docs_manifest","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Response Docs Manifest"}}}},"4XX":{"description":"A problem (RFC 9457); `code` names it and `field` the offending key","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/docs/figures/{name}":{"get":{"tags":["docs"],"summary":"Docs Figure","operationId":"docs_figure","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"4XX":{"description":"A problem (RFC 9457); `code` names it and `field` the offending key","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/docs/{key}.md":{"get":{"tags":["docs"],"summary":"Docs Page Markdown","description":"The page of one documentation key as markdown (its frontmatter, then the page), for agents and plain-text readers; the same keys as `GET /api/docs/{key}`.","operationId":"docs_page_markdown","parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","title":"Key"}}],"responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}},"4XX":{"description":"A problem (RFC 9457); `code` names it and `field` the offending key","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/docs/{key}":{"get":{"tags":["docs"],"summary":"Docs Page","description":"The page of one documentation key. A key of the manifest (`GET /api/docs`) whose page is not written returns a placeholder; a field documented on a shared page (`iam.angles_deg` on `iam.profile`) returns that page; any other key, a removed field for example, is a 404.","operationId":"docs_page","parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","title":"Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Docs Page"}}}},"4XX":{"description":"A problem (RFC 9457); `code` names it and `field` the offending key","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/auth/start":{"post":{"tags":["account"],"summary":"Email a sign-in link","operationId":"start_sign_in","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartIn"},"example":{"email":"you@example.com","accept_terms":true,"terms_version":"2026-10-02"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Start Sign In"}}}},"4XX":{"description":"A problem (RFC 9457); `code` names it and `field` the offending key","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/auth/signout":{"post":{"tags":["account"],"summary":"Signout","operationId":"sign_out","responses":{"204":{"description":"Successful Response"},"4XX":{"description":"A problem (RFC 9457); `code` names it and `field` the offending key","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/pricing":{"get":{"tags":["account"],"summary":"The price of a unit, the free units of a month and the units a run takes","description":"A run takes `(base + ⌊placements / placements_per_unit⌋ + ⌊shading objects / objects_per_unit⌋) × terrain-aware multiplier × time-step multiplier` units. `formula` states it with today's numbers. `rules` holds them. `terrain_aware_multiplier` applies to a run with terrain-aware backtracking. `step_multipliers` maps the weather's time step in minutes to its multiplier. With `per_weather_year` true, weather longer than 8,784 hours counts once per year. Placements are the scene's racks, trackers or roof modules. Shading objects are its prisms, walls, tree lines and cylinders. A unit costs `unit_price_usd`. Each account gets `free_units_per_month` free units a month. A charged run's `billing.reasons` lists each term of its units.","operationId":"get_pricing","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Pricing"}}}},"4XX":{"description":"A problem (RFC 9457); `code` names it and `field` the offending key","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/me":{"get":{"tags":["account"],"summary":"The caller's account: sign-in state, free units, balance, unit price","operationId":"get_account","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Account"}}}},"4XX":{"description":"A problem (RFC 9457); `code` names it and `field` the offending key","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/me/terms":{"post":{"tags":["account"],"summary":"Agree to the current Terms and Conditions (after an update)","operationId":"accept_terms","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TermsIn"},"example":{"accept_terms":true,"terms_version":"2026-10-02"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Accept Terms"}}}},"4XX":{"description":"A problem (RFC 9457); `code` names it and `field` the offending key","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/me/budget":{"put":{"tags":["account"],"summary":"Cap monthly usage billing; runs over the cap are refused","operationId":"set_monthly_budget","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BudgetIn"},"example":{"budget_usd":50}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Set Monthly Budget"}}}},"4XX":{"description":"A problem (RFC 9457); `code` names it and `field` the offending key","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/me/profile":{"put":{"tags":["account"],"summary":"The name and business name a PDF report prints","operationId":"save_report_profile","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfileIn"},"example":{"name":"A. Engineer","business_name":"Example Solar LLC"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Save Report Profile"}}}},"4XX":{"description":"A problem (RFC 9457); `code` names it and `field` the offending key","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/me/logo":{"get":{"tags":["account"],"summary":"The account's logo","operationId":"get_report_logo","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"4XX":{"description":"A problem (RFC 9457); `code` names it and `field` the offending key","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"put":{"tags":["account"],"summary":"The logo a PDF report prints (PNG or JPEG, at most 1 MB)","operationId":"upload_report_logo","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_report_logo"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Upload Report Logo"}}}},"4XX":{"description":"A problem (RFC 9457); `code` names it and `field` the offending key","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"delete":{"tags":["account"],"summary":"Remove Logo","operationId":"remove_report_logo","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Remove Report Logo"}}}},"4XX":{"description":"A problem (RFC 9457); `code` names it and `field` the offending key","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/me/preference":{"put":{"tags":["account"],"summary":"Save a path (step choices) as the account's User Preference","operationId":"save_user_preference","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreferenceIn"},"example":{"choices":{"transposition":"hay_davies"}}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Save User Preference"}}}},"4XX":{"description":"A problem (RFC 9457); `code` names it and `field` the offending key","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"delete":{"tags":["account"],"summary":"Clear Preference","operationId":"clear_user_preference","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Clear User Preference"}}}},"4XX":{"description":"A problem (RFC 9457); `code` names it and `field` the offending key","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/keys":{"get":{"tags":["account"],"summary":"The account's API keys","operationId":"list_api_keys","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Response List Api Keys"}}}},"4XX":{"description":"A problem (RFC 9457); `code` names it and `field` the offending key","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"post":{"tags":["account"],"summary":"Create an API key; the full key is returned once","operationId":"create_api_key","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeyIn"},"example":{"label":"CI pipeline"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Create Api Key"}}}},"4XX":{"description":"A problem (RFC 9457); `code` names it and `field` the offending key","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/keys/{key_id}":{"delete":{"tags":["account"],"summary":"Revoke Key","operationId":"revoke_api_key","parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"string","title":"Key Id"}}],"responses":{"204":{"description":"Successful Response"},"4XX":{"description":"A problem (RFC 9457); `code` names it and `field` the offending key","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/billing/topup":{"post":{"tags":["account"],"summary":"A Stripe Checkout link to add money to the wallet","operationId":"start_wallet_topup","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TopupIn"},"example":{"amount_usd":25}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Start Wallet Topup"}}}},"4XX":{"description":"A problem (RFC 9457); `code` names it and `field` the offending key","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/billing/monthly":{"post":{"tags":["account"],"summary":"A Stripe Checkout link to switch to monthly usage billing","operationId":"start_monthly_billing","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Start Monthly Billing"}}}},"4XX":{"description":"A problem (RFC 9457); `code` names it and `field` the offending key","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/billing/portal":{"post":{"tags":["account"],"summary":"A Stripe Customer Portal link for cards and invoices","operationId":"open_billing_portal","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Open Billing Portal"}}}},"4XX":{"description":"A problem (RFC 9457); `code` names it and `field` the offending key","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/billing/checkout/{session_id}/confirm":{"post":{"tags":["account"],"summary":"Apply a finished Checkout Session (idempotent)","operationId":"confirm_checkout","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Confirm Checkout"}}}},"4XX":{"description":"A problem (RFC 9457); `code` names it and `field` the offending key","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/billing/sync":{"post":{"tags":["account"],"summary":"Refresh the monthly-billing state from Stripe","operationId":"sync_billing","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Sync Billing"}}}},"4XX":{"description":"A problem (RFC 9457); `code` names it and `field` the offending key","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/llms.txt":{"get":{"tags":["docs"],"summary":"Llms","operationId":"llms_txt","responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}},"4XX":{"description":"A problem (RFC 9457); `code` names it and `field` the offending key","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}}},"components":{"schemas":{"ACLossesIn":{"properties":{"ac_wiring_loss_at_stc":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Ac Wiring Loss At Stc","description":"AC ohmic wiring loss at the power reference, fraction","default":0.0},"ohmic_model":{"type":"string","enum":["ohmic_i2r","flat"],"title":"Ohmic Model","description":"AC ohmic loss law: k·P² on the inverter output (ohmic_i2r) or the fraction of the inverter output (flat)","default":"ohmic_i2r"},"transformer_constant_loss":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Transformer Constant Loss","description":"MV transformer iron loss, fraction of P_ref (drawn 24 h)","default":0.0},"transformer_loss_at_stc":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Transformer Loss At Stc","description":"MV transformer copper loss at P_ref, fraction","default":0.0},"mv_line_loss_at_stc":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Mv Line Loss At Stc","description":"MV line ohmic loss at P_ref, fraction (on the sum of the inverters)","default":0.0},"hv_transformer_loss_at_stc":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Hv Transformer Loss At Stc","description":"HV transformer copper (resistive) loss at P_ref, fraction (on the sum of the inverters)","default":0.0},"hv_transformer_constant_loss":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Hv Transformer Constant Loss","description":"HV transformer iron loss, fraction of the system P_ref, drawn 24 h (or exporting hours with night disconnect)","default":0.0},"hv_line_loss_at_stc":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Hv Line Loss At Stc","description":"HV line ohmic loss at P_ref, fraction (on the sum of the inverters, after the HV transformer)","default":0.0},"transmission_loss":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Transmission Loss","description":"Fixed transmission loss per exporting hour, fraction","default":0.0},"other_loss":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Other Loss","description":"Other AC loss, fraction","default":0.0},"aux_kw":{"type":"number","minimum":0.0,"title":"Aux Kw","description":"Auxiliaries, continuous (fans, etc.) while exporting above the threshold, kW","default":0.0},"aux_threshold_kw":{"type":"number","minimum":0.0,"title":"Aux Threshold Kw","description":"Auxiliaries: from power threshold, kW","default":0.0},"aux_proportional_w_per_kw":{"type":"number","maximum":1000.0,"minimum":0.0,"title":"Aux Proportional W Per Kw","description":"Auxiliaries proportional to the inverter output while exporting, W per kW","default":0.0},"aux_night_kw":{"type":"number","minimum":0.0,"title":"Aux Night Kw","description":"Auxiliaries: night consumption on hours whose sun-up flag is false, kW","default":0.0},"grid_poi_limit_kw":{"type":"number","minimum":0.0,"title":"Grid Poi Limit Kw","description":"Grid power limitation, kW active (or kVA with grid_limit_apparent); 0 = none","default":0.0},"grid_limit_at":{"type":"string","enum":["injection","inverter_output"],"title":"Grid Limit At","description":"Where the grid limitation applies: at the injection point (the inverter ceiling is pre-evaluated so E_Grid lands on the limit) or at the inverter output (the ceiling is the limit)","default":"injection"},"grid_limit_apparent":{"type":"boolean","title":"Grid Limit Apparent","description":"The grid limitation is an apparent power (kVA): the active limit is the value × power factor","default":false},"grid_limit_separate_loss":{"type":"boolean","title":"Grid Limit Separate Loss","description":"Show the grid-limitation clip as its own row, Unused energy (grid limitation), with the inverter output reported as without the limit; off folds it into the inverter overload loss","default":false},"unavailability_loss":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Unavailability Loss","description":"Unavailability as a flat energy fraction, applied last (a statistical expectation; use periods to place outages in time)","default":0.0},"unavailability_periods":{"items":{"$ref":"#/components/schemas/UnavailabilityPeriod"},"type":"array","maxItems":50,"title":"Unavailability Periods","description":"Shutdown periods (start, duration): inside one the AC chain and the day auxiliaries are zero, the night auxiliaries stay and the inverter output is the unavailability loss"},"power_factor":{"type":"number","maximum":1.0,"exclusiveMinimum":0.0,"title":"Power Factor","description":"Power factor (inflates ohmic losses by 1/PF)","default":1.0},"pnom_apparent":{"type":"boolean","title":"Pnom Apparent","description":"Nameplate is apparent (kVA): real ceiling = P_nom × PF","default":false},"inverter_night_tare":{"type":"boolean","title":"Inverter Night Tare","description":"Count the inverter night consumption on night and no-start hours","default":true},"transformer_night_disconnect":{"type":"boolean","title":"Transformer Night Disconnect","description":"Night disconnect: the transformer iron losses on exporting hours only, and no inverter night consumption (the system is off the grid)","default":false},"power_reference":{"type":"string","enum":["pnom_inverter","pnompv_ac_stc"],"title":"Power Reference","description":"Reference of the % at STC fractions","default":"pnom_inverter"},"resistive_reference":{"type":"string","enum":["inverter_output","cascade"],"title":"Resistive Reference","description":"Power the k·P² losses are evaluated on","default":"inverter_output"},"stc_ref_power_w":{"type":"number","minimum":0.0,"title":"Stc Ref Power W","description":"STC reference power of the system for the pnompv_ac_stc reference, W (0 = derived from the DC nameplate and the mismatch derates)","default":0.0},"use_mv_transformer":{"type":"boolean","title":"Use Mv Transformer","description":"Model the medium-voltage transformer (iron and copper losses); off keeps the entered values","default":true},"use_mv_line":{"type":"boolean","title":"Use Mv Line","description":"Model the medium-voltage line loss; off keeps the entered value","default":true},"use_hv_transformer":{"type":"boolean","title":"Use Hv Transformer","description":"Model the high-voltage transformer (iron and copper losses); off keeps the entered values","default":true},"use_hv_line":{"type":"boolean","title":"Use Hv Line","description":"Model the high-voltage line loss; off keeps the entered value","default":true},"use_transmission":{"type":"boolean","title":"Use Transmission","description":"Model the fixed transmission loss and the other AC loss; off keeps the entered values","default":true},"use_auxiliaries":{"type":"boolean","title":"Use Auxiliaries","description":"Model the auxiliary consumption (day, proportional and night); off keeps the entered values","default":true},"use_grid_limit":{"type":"boolean","title":"Use Grid Limit","description":"Model the grid power limitation; off keeps the entered limit and the inverters run to their own AC limit","default":true},"use_unavailability":{"type":"boolean","title":"Use Unavailability","description":"Model the unavailability (the flat fraction and the shutdown periods); off keeps the entered values","default":true}},"additionalProperties":false,"type":"object","title":"ACLossesIn"},"ArrayIn":{"properties":{"track_mode":{"type":"string","enum":["fixed","single_axis","rooftop","ewf"],"title":"Track Mode","description":"Racking type","default":"fixed"},"tilt_deg":{"type":"number","maximum":90.0,"minimum":0.0,"title":"Tilt Deg","description":"Plane tilt (fixed, rooftop), face tilt (ewf) or axis tilt (tracker), °","default":20.0},"azimuth_deg":{"type":"number","maximum":360.0,"minimum":0.0,"title":"Azimuth Deg","description":"Bearing the plane faces, ° clockwise from north (tracker: the axis descends toward it)","default":180.0},"rotation_limit_deg":{"type":"number","maximum":90.0,"minimum":0.0,"title":"Rotation Limit Deg","description":"Tracker mechanical stroke when symmetric, ±°","default":60.0},"rotation_min_deg":{"anyOf":[{"type":"number","maximum":90.0,"minimum":-90.0},{"type":"null"}],"title":"Rotation Min Deg","description":"Lower rotation stop, ° (null = −rotation_limit_deg); positive rotation faces azimuth_deg + 90"},"rotation_max_deg":{"anyOf":[{"type":"number","maximum":90.0,"minimum":-90.0},{"type":"null"}],"title":"Rotation Max Deg","description":"Upper rotation stop, ° (null = +rotation_limit_deg)"},"wind_stow":{"type":"boolean","title":"Wind Stow","description":"Park the tracker at the stow angle above the wind speed threshold","default":false},"wind_stow_speed_ms":{"type":"number","maximum":60.0,"exclusiveMinimum":0.0,"title":"Wind Stow Speed Ms","description":"Wind speed that triggers the stow position, m/s","default":12.0},"wind_stow_angle_deg":{"type":"number","maximum":90.0,"minimum":-90.0,"title":"Wind Stow Angle Deg","description":"Stow rotation, °","default":0.0},"gcr":{"type":"number","maximum":1.0,"exclusiveMinimum":0.0,"title":"Gcr","description":"Ground cover ratio W/pitch","default":0.4},"backtracking":{"type":"boolean","title":"Backtracking","description":"Tracker backtracking","default":true},"modules_per_string":{"type":"integer","maximum":100.0,"minimum":1.0,"title":"Modules Per String","description":"Modules in series per string","default":1},"strings_per_inverter":{"type":"integer","maximum":100000.0,"minimum":1.0,"title":"Strings Per Inverter","description":"Strings per inverter block","default":1},"n_inverters":{"type":"integer","maximum":10000.0,"minimum":1.0,"title":"N Inverters","description":"Identical inverter blocks; system-level AC losses apply once to the sum","default":1},"collector_width_m":{"type":"number","maximum":50.0,"exclusiveMinimum":0.0,"title":"Collector Width M","description":"Sensitive collector width (slope length), m; pitch = W/GCR","default":2.0},"shade_mode":{"type":"string","enum":["linear","electrical","strings_partition","module_layout"],"title":"Shade Mode","description":"Electrical shading effect (linear: none; electrical: strips across the collector width of the rows model; strings_partition: the partitions of a scene's tables; module_layout: each string's I-V curve from its sub-modules' shade at the inverter's MPPT minimum; the last two need a scene with pvsyst_table or direct)","default":"linear"},"string_steps":{"anyOf":[{"type":"integer","maximum":20.0,"minimum":1.0},{"type":"null"}],"title":"String Steps","description":"Strings on one rack, each independently bypassed (null = 1)"},"string_layout":{"type":"string","enum":["across","along"],"title":"String Layout","description":"How the string_steps strings divide a rack: across (stacked across the width, each running the row) or along (side by side along the row, each across the width; a shadow on the row reaches every one)","default":"across"},"cell_traverse_m":{"type":"number","maximum":1.0,"exclusiveMinimum":0.0,"title":"Cell Traverse M","description":"One cell-row height, m (the ramp width of the electrical partition model)","default":0.156},"fraction_for_electrical":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Fraction For Electrical","description":"Scales the electrical-partition loss","default":1.0},"band_top_m":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Band Top M","description":"Inactive strip at the top (tracker: InactiveBandWidth1, acting while the plane faces east), m","default":0.02},"band_bottom_m":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Band Bottom M","description":"Inactive strip at the bottom (tracker: InactiveBandWidth2), m","default":0.02},"n_rows":{"type":"integer","maximum":10000.0,"minimum":1.0,"title":"N Rows","description":"Rows in the block (albedo view factor 1/N)","default":20},"row_count":{"type":"string","enum":["racking","square_field"],"title":"Row Count","description":"Rows Deline's self-shading counts: n_rows (racking) or the square-field estimate from the DC nameplate (square_field)","default":"racking"},"inter_row_shading":{"type":"boolean","title":"Inter Row Shading","description":"Master switch for beam shade, electrical effect, sky and albedo masking","default":true},"transposition_model":{"type":"string","enum":["perez","hay_davies","isotropic"],"title":"Transposition Model","description":"Transposition model","default":"perez"},"perez_settings":{"type":"string","enum":["pvsyst_8","published","ssc"],"title":"Perez Settings","description":"Perez constants and inputs (inert unless perez)","default":"pvsyst_8"},"circumsolar":{"type":"string","enum":["separate","diffuse"],"title":"Circumsolar","description":"Circumsolar treatment (separate like beam, or inside the diffuse)","default":"separate"},"shading_model":{"type":"string","enum":["unlimited_sheds","geometric","deline","deline_nonlinear","pvsyst_table","direct"],"title":"Shading Model","description":"Near-shading geometry (deline: linear self-shading with its own sky and ground derates, no scene; deline_nonlinear: Deline's non-linear self-shading with its DC derate from the shaded substrings, no scene; pvsyst_table: a sun-position table of the projected rows and objects, scene only; direct: the projection every step, scene only)","default":"unlimited_sheds"},"sky_masking_method":{"type":"string","enum":["isotropic_integral","view_factor","passias"],"title":"Sky Masking Method","description":"Row masking of the isotropic + horizon-band diffuse: isotropic_integral (the isotropic sky integral over the row's shade), view_factor (the interior row's sky view factor) or passias (Passias and Källbäck 1984 masking angle)","default":"isotropic_integral"},"backtracking_width_method":{"type":"string","enum":["active_band","gcr","custom"],"title":"Backtracking Width Method","description":"Reference width for the backtracking angle","default":"active_band"},"backtracking_width_m":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"null"}],"title":"Backtracking Width M","description":"Explicit reference width, m (custom)"},"backtracking_angle":{"type":"string","enum":["common_angle","terrain_aware"],"title":"Backtracking Angle","description":"common_angle: one backtracking rotation per orientation group (PVsyst); terrain_aware: each scene tracker's own rotation from its neighbours' heights (needs a scene, backtracking on and near shading direct or off)","default":"common_angle"},"irradiance_tracking":{"type":"boolean","title":"Irradiance Tracking","description":"Irradiance-optimised tracking on top of the tracking rule (single-axis trackers)","default":false},"irradiance_tracking_method":{"type":"string","enum":["flat_switch","best_angle"],"title":"Irradiance Tracking Method","description":"flat_switch: flat on steps where the flat plane gains enough; best_angle: PVsyst's irradiance optimisation, 1° steps from the tracking rotation to the most plane irradiance after the diffuse row shading","default":"flat_switch"},"irradiance_tracking_search":{"type":"string","enum":["full_climb","pvsyst_8"],"title":"Irradiance Tracking Search","description":"best_angle: full_climb climbs while each step gains; pvsyst_8 scores the second step of the search toward higher rotations as PVsyst 8.1.5 does, with the beam and circumsolar cut by row shading at a ground cover ratio of cos 45° (fitted to PVsyst's hourly output)","default":"pvsyst_8"},"irradiance_tracking_gain":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Irradiance Tracking Gain","description":"flat_switch: smallest relative gain of the flat plane, fraction","default":0.05},"irradiance_tracking_min_ghi_wm2":{"type":"number","minimum":0.0,"title":"Irradiance Tracking Min Ghi Wm2","description":"flat_switch: GHI below which the tracker keeps tracking, W/m²","default":100.0}},"additionalProperties":false,"type":"object","title":"ArrayIn"},"BifacialIn":{"properties":{"model":{"anyOf":[{"type":"string","enum":["sheds_2d","view_factor","infinite_sheds","bifacialvf"]},{"type":"null"}],"title":"Model","description":"Rear model (null = auto: sheds_2d fixed, view_factor tracker; infinite_sheds: Mikofski 2019, fixed rows and trackers; bifacialvf: Marion 2017 with 1° view sectors per cell row, fixed rows and trackers)"},"ground_clearance_m":{"type":"number","maximum":20.0,"minimum":0.0,"title":"Ground Clearance M","description":"Bottom-edge height (fixed) or hub height (tracker), m","default":1.5},"transmission_factor":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.0},{"type":"null"}],"title":"Transmission Factor","description":"Fraction of the beam that passes through the module plane onto the shaded ground (null = 0.013 under bifacialvf, 0 under the other rear models)"},"structure_shade_factor":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Structure Shade Factor","description":"Structure shading of the rear","default":0.05},"rear_mismatch_loss":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Rear Mismatch Loss","description":"Rear mismatch loss factor","default":0.1},"geometry":{"type":"string","enum":["racking","pvwatts_layout"],"title":"Geometry","description":"Rear geometry: racking (array.collector_width_m and this section's clearance, transmission factor and structure shade factor) or pvwatts_layout (PVWatts 8's fixed rear geometry: the slope length of its 300 W representative module, one up on a tracker and two up on a fixed rack, 1 m clearance, transmission 0.013, no structure shade)","default":"racking"},"rear_mismatch_model":{"type":"string","enum":["flat","deline_2020","none"],"title":"Rear Mismatch Model","description":"Rear mismatch: flat (rear_mismatch_loss), none (PVWatts 8) or deline_2020 (Deline 2020, the mismatch calculated from the rear cell rows of the view_factor or bifacialvf model, every timestep)","default":"flat"},"albedo":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.0},{"type":"null"}],"title":"Albedo","description":"Ground albedo behind the array (null = site albedo)"},"albedo_monthly":{"anyOf":[{"items":{"type":"number","maximum":1.0,"minimum":0.0},"type":"array","maxItems":12,"minItems":12},{"type":"null"}],"title":"Albedo Monthly","description":"Monthly ground albedo behind the array"}},"additionalProperties":false,"type":"object","title":"BifacialIn"},"BifacialSummary":{"properties":{"model":{"type":"string","title":"Model","description":"The rear-side model the run used"},"global_incident_on_ground_kwhm2":{"type":"number","title":"Global Incident On Ground Kwhm2","description":"Global irradiation on the ground, kWh/m²"},"ground_reflection_loss_albedo":{"type":"number","title":"Ground Reflection Loss Albedo","description":"Ground reflection loss over the ground's global irradiation, fraction"},"view_factor_rear":{"type":"number","title":"View Factor Rear","description":"Ground view factor of the rear side, 0–1"},"structure_shading_loss":{"type":"number","title":"Structure Shading Loss","description":"Rear-side shading by the structure, fraction"},"rear_effective_kwhm2":{"type":"number","title":"Rear Effective Kwhm2","description":"Irradiation on the rear side, kWh/m²"},"rear_effective_after_bifaciality_kwhm2":{"type":"number","title":"Rear Effective After Bifaciality Kwhm2","description":"Rear irradiation times the bifaciality factor, kWh/m²"},"front_ground_reflection_kwhm2":{"type":"number","title":"Front Ground Reflection Kwhm2","description":"Ground-reflected irradiation on the front side, kWh/m²"},"bifaciality_factor":{"type":"number","title":"Bifaciality Factor","description":"The module's bifaciality, 0–1"}},"additionalProperties":true,"type":"object","required":["model","global_incident_on_ground_kwhm2","ground_reflection_loss_albedo","view_factor_rear","structure_shading_loss","rear_effective_kwhm2","rear_effective_after_bifaciality_kwhm2","front_ground_reflection_kwhm2","bifaciality_factor"],"title":"BifacialSummary","description":"``summary.bifacial``, with a `bifacial` section."},"Billing":{"properties":{"units":{"type":"integer","title":"Units","description":"Units the run takes (`GET /v1/pricing` gives the rules)"},"reasons":{"items":{"type":"string"},"type":"array","title":"Reasons","description":"One entry per term of the units in the order they apply, for example `base 1`, `1,976 placements +19`, `120 shading objects +2`, `terrain-aware backtracking ×2` and `15-minute weather ×4`"},"unit_price_usd":{"type":"number","title":"Unit Price Usd","description":"The price of one unit, USD"},"price_usd":{"type":"number","title":"Price Usd","description":"The run's price, units × the unit price, USD"},"paid_by":{"type":"string","title":"Paid By","description":"`free` (the month's free units), `wallet` or `monthly`"},"charged_usd":{"type":"number","title":"Charged Usd","description":"What the run cost, USD (0 when paid by free units)"},"free_units_left":{"type":"integer","title":"Free Units Left","description":"Free units left this month"},"free_runs_left":{"type":"integer","title":"Free Runs Left","description":"The same as `free_units_left` (the former name)"},"balance_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Balance Usd","description":"Wallet balance after the run, USD (free and wallet runs)"},"month_to_date_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Month To Date Usd","description":"Monthly usage so far, USD (monthly runs)"}},"additionalProperties":true,"type":"object","required":["units","reasons","unit_price_usd","price_usd","paid_by","charged_usd","free_units_left","free_runs_left"],"title":"Billing","description":"``billing``, on a charged run made with an account."},"Body_parse_ond_file":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_parse_ond_file"},"Body_parse_pan_file":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_parse_pan_file"},"Body_parse_pvsyst_scene":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_parse_pvsyst_scene"},"Body_parse_weather_file":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"},"latitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Latitude"},"longitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Longitude"},"timezone":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Timezone"},"decomposition":{"type":"string","enum":["erbs","dirint"],"title":"Decomposition","description":"Split of a GHI-only file into DHI and DNI: erbs (Erbs 1982) or dirint (Perez 1992, DISC with its correction table); unused when the file has DHI or DNI","default":"erbs"}},"type":"object","required":["file"],"title":"Body_parse_weather_file"},"Body_upload_report_logo":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_report_logo"},"BudgetIn":{"properties":{"budget_usd":{"anyOf":[{"type":"number","maximum":1000000.0,"minimum":0.0},{"type":"null"}],"title":"Budget Usd","description":"Monthly usage cap in USD; null for no cap"}},"type":"object","required":["budget_usd"],"title":"BudgetIn"},"CecModuleIn":{"properties":{"a_ref":{"type":"number","exclusiveMinimum":0.0,"title":"A Ref","description":"a_ref: modified ideality factor at STC, V"},"i_l_ref":{"type":"number","exclusiveMinimum":0.0,"title":"I L Ref","description":"I_L,ref: light current at STC, A"},"i_o_ref":{"type":"number","exclusiveMinimum":0.0,"title":"I O Ref","description":"I_o,ref: diode saturation current at STC, A"},"r_s":{"type":"number","minimum":0.0,"title":"R S","description":"R_s: series resistance, Ω"},"r_sh_ref":{"type":"number","exclusiveMinimum":0.0,"title":"R Sh Ref","description":"R_sh,ref: shunt resistance at STC, Ω"},"adjust":{"type":"number","title":"Adjust","description":"Adjust: the CEC temperature-coefficient adjustment, %"},"alpha_sc":{"type":"number","title":"Alpha Sc","description":"α_sc: short-circuit current coefficient, A/K"},"beta_oc":{"type":"number","title":"Beta Oc","description":"β_oc: open-circuit voltage coefficient, V/K"},"n_s":{"type":"integer","exclusiveMinimum":0.0,"title":"N S","description":"Cells in series"},"t_noct_c":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"T Noct C","description":"Rated NOCT, °C"},"area_m2":{"type":"number","exclusiveMinimum":0.0,"title":"Area M2","description":"Module area, m²"},"v_mp":{"type":"number","exclusiveMinimum":0.0,"title":"V Mp","description":"V_mp at STC of the CEC entry, V"},"i_mp":{"type":"number","exclusiveMinimum":0.0,"title":"I Mp","description":"I_mp at STC of the CEC entry, A"},"v_oc":{"type":"number","exclusiveMinimum":0.0,"title":"V Oc","description":"V_oc at STC of the CEC entry, V"},"i_sc":{"type":"number","exclusiveMinimum":0.0,"title":"I Sc","description":"I_sc at STC of the CEC entry, A"}},"additionalProperties":false,"type":"object","required":["a_ref","i_l_ref","i_o_ref","r_s","r_sh_ref","adjust","alpha_sc","beta_oc","n_s","area_m2","v_mp","i_mp","v_oc","i_sc"],"title":"CecModuleIn"},"CylinderObjectIn":{"properties":{"kind":{"type":"string","const":"cylinder","title":"Kind","default":"cylinder"},"id":{"anyOf":[{"type":"string","maxLength":64,"minLength":1},{"type":"null"}],"title":"Id","description":"Object id (unique; null = o<n>)"},"x":{"type":"number","title":"X","description":"Base centre x, east; unitless, the same unit as every other length in the scene"},"y":{"type":"number","title":"Y","description":"Base centre y, north; unitless, the same unit as every other length in the scene"},"z":{"type":"number","title":"Z","description":"Base elevation z, up; unitless, the same unit as every other length in the scene","default":0.0},"radius":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"null"}],"title":"Radius","description":"Radius (give exactly one of radius and diameter); unitless, the same unit as every other length in the scene"},"diameter":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"null"}],"title":"Diameter","description":"Diameter (give exactly one of radius and diameter); unitless, the same unit as every other length in the scene"},"height":{"type":"number","exclusiveMinimum":0.0,"title":"Height","description":"Height above the base; shaded as an octagonal prism; unitless, the same unit as every other length in the scene"}},"additionalProperties":false,"type":"object","required":["x","y","height"],"title":"CylinderObjectIn"},"DCLossesIn":{"properties":{"quality_loss":{"type":"number","maximum":0.5,"minimum":-0.2,"title":"Quality Loss","description":"Module quality loss, fraction (negative = gain)","default":0.0},"lid_loss":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Lid Loss","description":"Light-induced degradation, fraction","default":0.0},"module_mismatch_loss":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Module Mismatch Loss","description":"Module mismatch, fraction (acts on current in the IV walk)","default":0.0},"string_mismatch_loss":{"type":"number","maximum":1.0,"minimum":0.0,"title":"String Mismatch Loss","description":"String mismatch, fraction (acts on voltage)","default":0.0},"dc_wiring_loss_at_stc":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Dc Wiring Loss At Stc","description":"DC ohmic wiring loss at STC current, fraction","default":0.0},"ohmic_model":{"type":"string","enum":["ohmic_i2r","load_ratio","flat"],"title":"Ohmic Model","description":"DC wiring loss model","default":"ohmic_i2r"},"dc_wiring_r_ohm":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"null"}],"title":"Dc Wiring R Ohm","description":"Global wiring resistance per inverter sub-array, Ω"},"light_soaking_gain":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Light Soaking Gain","description":"Light soaking gain for CIS/CIGS modules, fraction (a flat gain after the LID loss)","default":0.0},"series_diode_voltage_v":{"type":"number","maximum":5.0,"minimum":0.0,"title":"Series Diode Voltage V","description":"Series (blocking) diode voltage drop per string, V; the loss V·I counts in the DC wiring loss row","default":0.0}},"additionalProperties":false,"type":"object","title":"DCLossesIn"},"DefaultApplied":{"properties":{"field":{"type":"string","title":"Field","description":"The path of the value in `request`"},"value":{"title":"Value","description":"The value the run used"},"source":{"type":"string","title":"Source","description":"Where the value comes from"}},"additionalProperties":true,"type":"object","required":["field","value","source"],"title":"DefaultApplied","description":"One entry of a simple run's ``defaults_applied``."},"DeviceTypeIn":{"properties":{"id":{"type":"string","maxLength":64,"minLength":1,"title":"Id","description":"Type id (unique in the scene)"},"kind":{"type":"string","enum":["gft","sat","ewf"],"title":"Kind","description":"Fixed rack (gft), single-axis tracker (sat) or east-west ridge (ewf: two faces back to back; the placement is the ridge, azimuth along the ridge, tilt the face tilt); a roof array is a gft type on the roof plane"},"length":{"type":"number","exclusiveMinimum":0.0,"title":"Length","description":"Length along the tracker axis, the rack row or the ridge; unitless, the same unit as every other length in the scene"},"width":{"type":"number","exclusiveMinimum":0.0,"title":"Width","description":"Width across the row, up the tilt (the collector width W); ewf: one face's slant width; unitless, the same unit as every other length in the scene"},"modules":{"type":"integer","minimum":1.0,"title":"Modules","description":"Modules on one device of this type (the blend weight); ewf: both faces, an even number"},"strings":{"type":"integer","minimum":1.0,"title":"Strings","description":"Strings on one device of this type (default 1); ewf: both faces, an even number","default":1},"gap":{"type":"number","minimum":0.0,"title":"Gap","description":"ewf: the distance between the two faces' top edges (default 0); other kinds ignore it; unitless, the same unit as every other length in the scene","default":0.0},"border":{"type":"number","minimum":0.0,"title":"Border","description":"The frame around the modules' rectangle on every side (default 0): it shades the neighbours as part of the device's outline and is not part of the area a shadow is measured on; unitless, the same unit as every other length in the scene","default":0.0},"string_layout":{"anyOf":[{"type":"string","enum":["across","along"]},{"type":"null"}],"title":"String Layout","description":"How the strings divide one device (one face of an ewf type) for array.shade_mode strings_partition and module_layout: across (stacked across the width, each running the length) or along (side by side along the length, each across the width); null: along for sat, across for gft and ewf"}},"additionalProperties":false,"type":"object","required":["id","kind","length","width","modules"],"title":"DeviceTypeIn"},"FeedbackIn":{"properties":{"kind":{"type":"string","enum":["bug","feedback"],"title":"Kind","description":"bug: something is wrong; feedback: anything else"},"text":{"type":"string","maxLength":10000,"minLength":1,"title":"Text","description":"What happened or what you suggest"},"contact":{"anyOf":[{"type":"string","maxLength":320},{"type":"null"}],"title":"Contact","description":"An email address for a reply (optional)"},"run_id":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Run Id","description":"One of your stored runs to attach (optional)"},"request":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Request","description":"The run request you had trouble with (optional)"},"page":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Page","description":"Where in the workbench (optional)"}},"type":"object","required":["kind","text"],"title":"FeedbackIn"},"IAMCurveIn":{"properties":{"iam":{"additionalProperties":true,"type":"object","title":"Iam"},"module":{"additionalProperties":true,"type":"object","title":"Module"}},"type":"object","title":"IAMCurveIn"},"IAMIn":{"properties":{"kind":{"type":"string","enum":["auto","fresnel_ar","module_profile","fresnel","ashrae","tabulated","desoto"],"title":"Kind","description":"IAM model: auto takes the module's own incidence-angle curve when the module file carries one, else the Fresnel curve for anti-reflective glass (fresnel_ar); the other values select that model","default":"auto"},"b0":{"type":"number","maximum":0.5,"minimum":0.0,"title":"B0","description":"ASHRAE b₀ coefficient","default":0.05},"ar_coating":{"type":"boolean","title":"Ar Coating","description":"AR-coated glass for the direct Fresnel and the De Soto cover models","default":true},"diffuse_integration":{"type":"string","enum":["conditioned_integral","histogram","effective_aoi"],"title":"Diffuse Integration","description":"Diffuse IAM integration","default":"conditioned_integral"},"ground_iam_angle":{"type":"string","enum":["true_angle","horizontal_direction"],"title":"Ground Iam Angle","description":"Angle at which the conditioned integral reads the IAM of the ground-reflected light: true_angle (each ground direction's own incidence angle) or horizontal_direction (the incidence angle of the horizontal direction with the same azimuth); read with diffuse_integration = conditioned_integral only","default":"horizontal_direction"},"angles_deg":{"items":{"type":"number"},"type":"array","maxItems":91,"title":"Angles Deg","description":"Tabulated IAM angles, °"},"efficiencies":{"items":{"type":"number"},"type":"array","maxItems":91,"title":"Efficiencies","description":"Tabulated IAM factors, 0–1"}},"additionalProperties":false,"type":"object","title":"IAMIn"},"InverterIn":{"properties":{"p_nom_ac_w":{"type":"number","exclusiveMinimum":0.0,"title":"P Nom Ac W","description":"AC nameplate, W"},"p_nom_dc_w":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"null"}],"title":"P Nom Dc W","description":"DC reference of the part-load curve, W (null = AC nameplate)"},"v_mppt_min_v":{"type":"number","minimum":0.0,"title":"V Mppt Min V","description":"MPPT window low, V","default":0.0},"v_mppt_max_v":{"type":"number","exclusiveMinimum":0.0,"title":"V Mppt Max V","description":"MPPT window high, V","default":1000000000.0},"v_dc_max_v":{"type":"number","exclusiveMinimum":0.0,"title":"V Dc Max V","description":"Absolute DC maximum, V","default":1000000000.0},"p_threshold_w":{"type":"number","minimum":0.0,"title":"P Threshold W","description":"Power threshold below which no AC, W DC","default":0.0},"p_night_w":{"type":"number","minimum":0.0,"title":"P Night W","description":"Night tare, W AC","default":0.0},"max_efficiency":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Max Efficiency","description":"Efficiency of the flat law; nominal efficiency of the sandia and pvwatts laws; the flat efficiency when there is no curve","default":0.98},"i_dc_max_a":{"type":"number","minimum":0.0,"title":"I Dc Max A","description":"DC current limit, A (0 = check off)","default":0.0},"n_mppt":{"anyOf":[{"type":"integer","maximum":64.0,"minimum":1.0},{"type":"null"}],"title":"N Mppt","description":"Number of MPPT inputs (an OND file's NbMPPT); read by options.inverter_mppt_inputs"},"partload_fractions":{"items":{"type":"number"},"type":"array","maxItems":50,"title":"Partload Fractions","description":"Part-load curve x: fraction of P_nom DC"},"partload_efficiencies":{"items":{"type":"number"},"type":"array","maxItems":50,"title":"Partload Efficiencies","description":"Part-load curve y: efficiency 0–1"},"derate_temps_c":{"items":{"type":"number"},"type":"array","maxItems":10,"title":"Derate Temps C","description":"Ambient temperatures of the nameplate schedule, °C"},"derate_max_p_w":{"items":{"type":"number"},"type":"array","maxItems":10,"title":"Derate Max P W","description":"AC ceilings of the nameplate schedule, W"},"voltage_curve_v":{"items":{"type":"number"},"type":"array","maxItems":5,"title":"Voltage Curve V","description":"Test voltages of the per-voltage curves, V ascending"},"voltage_partload_fractions":{"items":{"items":{"type":"number"},"type":"array"},"type":"array","maxItems":5,"title":"Voltage Partload Fractions","description":"Per-voltage part-load x values"},"voltage_partload_efficiencies":{"items":{"items":{"type":"number"},"type":"array"},"type":"array","maxItems":5,"title":"Voltage Partload Efficiencies","description":"Per-voltage part-load efficiencies"},"efficiency_interpolation":{"type":"string","enum":["bilinear","parabolic_voltage_blend","sandia","sandia_voltage","flat","pvwatts"],"title":"Efficiency Interpolation","description":"Efficiency surface interpolation (sandia: the linear Sandia law with the maximum efficiency as the nominal one; sandia_voltage: King 2007 with its voltage terms, from the sandia block or fitted from the efficiency curves); flat: max_efficiency at every load, the curves not read; pvwatts: the PVWatts part-load curve of Dobos 2014 with max_efficiency as the nominal efficiency","default":"bilinear"},"sandia":{"anyOf":[{"$ref":"#/components/schemas/SandiaInverterIn"},{"type":"null"}],"description":"Sandia inverter model parameters (the CEC inverter database carries them); null = fitted from the efficiency curves when the sandia_voltage efficiency is chosen"},"operating_point":{"type":"string","enum":["iv_curve","power_limits","ac_clip","mppt_window"],"title":"Operating Point","description":"Operating-point rule under the limits","default":"iv_curve"},"dc_drop_reference":{"type":"string","enum":["mpp_current","operating_current"],"title":"Dc Drop Reference","description":"Wiring drop frozen at I_mpp or at the operating current","default":"mpp_current"},"mppt_floor_behavior":{"type":"string","enum":["displaced","clamp"],"title":"Mppt Floor Behavior","description":"Behaviour when the array's maximum-power voltage sits below the inverter's minimum MPP voltage","default":"displaced"},"vmin_loss_bucket":{"type":"string","enum":["would_clip","vmin"],"title":"Vmin Loss Bucket","description":"Which loss row receives the below-minimum loss","default":"would_clip"},"iv_shading_current_scale":{"type":"string","enum":["electrical_fraction","off"],"title":"Iv Shading Current Scale","description":"Scale the IV curve current by the shaded-strings fraction","default":"electrical_fraction"}},"additionalProperties":false,"type":"object","required":["p_nom_ac_w"],"title":"InverterIn"},"KeyIn":{"properties":{"label":{"type":"string","maxLength":200,"title":"Label","description":"A name for the key, e.g. the machine it runs on"}},"type":"object","required":["label"],"title":"KeyIn"},"LifetimeIn":{"properties":{"analysis_period_years":{"type":"integer","maximum":50.0,"minimum":1.0,"title":"Analysis Period Years","description":"Analysis years (1 until the lifetime loop is built)","default":1},"dc_degradation_rate":{"type":"number","maximum":0.05,"minimum":0.0,"title":"Dc Degradation Rate","description":"DC degradation per year, fraction","default":0.0}},"additionalProperties":false,"type":"object","title":"LifetimeIn"},"LossRow":{"properties":{"label":{"type":"string","title":"Label","description":"The row's label, in PVsyst's loss-diagram wording"},"key":{"type":"string","title":"Key","description":"Stable key, such as `loss.iam`; its field page is at `/v1/docs/{key}`"},"phase":{"type":"string","title":"Phase","description":"`irradiance` (values in kWh/m²) or `energy` (values in kWh/kWp)"},"kind":{"type":"string","title":"Kind","description":"`total`, `gain` or `loss`"},"value":{"type":"number","title":"Value","description":"The row's value in `unit`; losses are negative"},"unit":{"type":"string","title":"Unit","description":"`kWh/m2` or `kWh/kWp`"}},"additionalProperties":true,"type":"object","required":["label","key","phase","kind","value","unit"],"title":"LossRow","description":"One row of ``loss_diagram``, in order from the horizontal irradiation to the grid."},"ModuleIn":{"properties":{"p_nom_w":{"type":"number","maximum":2000.0,"exclusiveMinimum":0.0,"title":"P Nom W","description":"Nameplate power at STC, W"},"efficiency":{"anyOf":[{"type":"number","maximum":0.5,"exclusiveMinimum":0.0},{"type":"null"}],"title":"Efficiency","description":"Module efficiency at STC on the module area, fraction; read by the PVWatts DC model only (null = width × height, else 19 %, 18 % for thin film)"},"width_m":{"anyOf":[{"type":"number","maximum":5.0,"exclusiveMinimum":0.0},{"type":"null"}],"title":"Width M","description":"Module width, m; the one-diode models need it (null with the PVWatts DC model)"},"height_m":{"anyOf":[{"type":"number","maximum":5.0,"exclusiveMinimum":0.0},{"type":"null"}],"title":"Height M","description":"Module height, m; the one-diode models need it (null with the PVWatts DC model)"},"n_series":{"anyOf":[{"type":"integer","maximum":1000.0,"minimum":1.0},{"type":"null"}],"title":"N Series","description":"Cells in series; the one-diode models need it (null with the PVWatts DC model)"},"n_parallel":{"type":"integer","maximum":20.0,"minimum":1.0,"title":"N Parallel","description":"Cell strings in parallel","default":1},"e_g_ev":{"type":"number","exclusiveMaximum":3.0,"exclusiveMinimum":0.5,"title":"E G Ev","description":"Bandgap, eV; accepted, not read (the one-diode model uses 1.121 for every technology)","default":1.121},"i_sc_ref_a":{"anyOf":[{"type":"number","maximum":100.0,"exclusiveMinimum":0.0},{"type":"null"}],"title":"I Sc Ref A","description":"Short-circuit current at STC, A; the one-diode models need it (null with the PVWatts DC model)"},"v_oc_ref_v":{"anyOf":[{"type":"number","maximum":1000.0,"exclusiveMinimum":0.0},{"type":"null"}],"title":"V Oc Ref V","description":"Open-circuit voltage at STC, V; the one-diode models need it (null with the PVWatts DC model)"},"i_mp_ref_a":{"anyOf":[{"type":"number","maximum":100.0,"exclusiveMinimum":0.0},{"type":"null"}],"title":"I Mp Ref A","description":"MPP current at STC, A (cross-check); the one-diode models need it (null with the PVWatts DC model)"},"v_mp_ref_v":{"anyOf":[{"type":"number","maximum":1000.0,"exclusiveMinimum":0.0},{"type":"null"}],"title":"V Mp Ref V","description":"MPP voltage at STC, V; the one-diode models need it (null with the PVWatts DC model)"},"g_ref_wm2":{"type":"number","exclusiveMinimum":0.0,"title":"G Ref Wm2","description":"Reference irradiance, W/m²","default":1000.0},"t_ref_c":{"type":"number","title":"T Ref C","description":"Reference cell temperature, °C","default":25.0},"alpha_isc":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Alpha Isc","description":"Isc temperature coefficient, A/°C (PAN mA/°C ÷ 1000); the one-diode models need it (null with the PVWatts DC model)"},"beta_voc":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Beta Voc","description":"Voc temperature coefficient, V/°C (string sizing only)"},"mu_p_mp":{"type":"number","maximum":0.01,"minimum":-0.02,"title":"Mu P Mp","description":"Pmax temperature coefficient, 1/°C (-0.004 is -0.4 %/°C)","default":-0.004},"n_0":{"type":"number","exclusiveMaximum":3.0,"exclusiveMinimum":0.3,"title":"N 0","description":"Diode ideality; accepted, not read (the STC re-solve fits its own)","default":1.0},"mu_n":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Mu N","description":"Ideality temperature drift, 1/°C (fitted from mu_p_mp when null)","default":0.0},"r_s_ohm":{"anyOf":[{"type":"number","maximum":100.0,"exclusiveMinimum":0.0},{"type":"null"}],"title":"R S Ohm","description":"Series resistance, Ω; the one-diode models need it (null with the PVWatts DC model)"},"r_sh_ref_ohm":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"null"}],"title":"R Sh Ref Ohm","description":"Shunt resistance at G_ref, Ω; the one-diode models need it (null with the PVWatts DC model)"},"r_sh_0_ohm":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"null"}],"title":"R Sh 0 Ohm","description":"Dark shunt resistance, Ω (null = 4 × RShunt)"},"r_sh_exp":{"type":"number","exclusiveMinimum":0.0,"title":"R Sh Exp","description":"Exponential shunt law exponent","default":5.5},"d2_mu_tau":{"type":"number","minimum":0.0,"title":"D2 Mu Tau","description":"Thin-film recombination term, V","default":0.0},"iam_angles_deg":{"items":{"type":"number"},"type":"array","maxItems":91,"title":"Iam Angles Deg","description":"Measured IAM profile angles, °"},"iam_efficiencies":{"items":{"type":"number"},"type":"array","maxItems":91,"title":"Iam Efficiencies","description":"Measured IAM profile factors, 0–1"},"technology":{"type":"string","enum":["","monosi","multisi","cdte","cigs","asi"],"title":"Technology","description":"Normalised technology (gates auto spectral)","default":""},"bifaciality_factor":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Bifaciality Factor","description":"Rear/front efficiency ratio, 0 = monofacial","default":0.0},"twin_half_cells":{"type":"boolean","title":"Twin Half Cells","description":"Twin half-cell layout; accepted, not used by the model yet","default":false},"iam_mode":{"type":"string","enum":["","fresnel_ar","user_profile","fresnel_normal","ashrae"],"title":"Iam Mode","description":"Table-interpolation rule for the module curve","default":""},"weight_kg":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"null"}],"title":"Weight Kg","description":"Module mass, kg (null → 11 kg/m²)"},"model":{"type":"string","enum":["mermoud","desoto","cec","pvwatts"],"title":"Model","description":"Module model. One-diode: mermoud (Mermoud and Lejeune 2010, shunt resistance falling with irradiance), desoto (the CEC six-parameter model, De Soto 2006 with the Dobos 2012 adjustment, of a representative module, scaled to this module's nameplate and V_mp) or cec (the same model with this module's own CEC parameters, module.cec), or pvwatts (the PVWatts DC model of Dobos 2014: the nameplate power, the Pmax temperature coefficient and the efficiency; power only). A module without the electrical fields and without a model is pvwatts","default":"mermoud"},"cec":{"anyOf":[{"$ref":"#/components/schemas/CecModuleIn"},{"type":"null"}],"description":"The module's CEC database parameters (CEC library modules carry them); null = the cec module model is unavailable"}},"additionalProperties":false,"type":"object","required":["p_nom_w"],"title":"ModuleIn"},"MonthRow":{"properties":{"month":{"type":"integer","title":"Month","description":"Month, 1–12"},"glob_hor_kwhm2":{"type":"number","title":"Glob Hor Kwhm2","description":"Global horizontal irradiation, kWh/m²"},"diff_hor_kwhm2":{"type":"number","title":"Diff Hor Kwhm2","description":"Diffuse horizontal irradiation, kWh/m²"},"t_amb_c":{"type":"number","title":"T Amb C","description":"Mean ambient temperature, °C"},"glob_inc_kwhm2":{"type":"number","title":"Glob Inc Kwhm2","description":"Global irradiation on the module plane, kWh/m²"},"glob_eff_kwhm2":{"type":"number","title":"Glob Eff Kwhm2","description":"Effective irradiation after the angle-of-incidence, shading and soiling losses, kWh/m²"},"e_array_kwh":{"type":"number","title":"E Array Kwh","description":"DC energy at the inverter input, kWh"},"e_grid_kwh":{"type":"number","title":"E Grid Kwh","description":"Energy to the grid, kWh"},"pr":{"type":"number","title":"Pr","description":"Performance ratio of the month, fraction 0–1"}},"additionalProperties":true,"type":"object","required":["month","glob_hor_kwhm2","diff_hor_kwhm2","t_amb_c","glob_inc_kwhm2","glob_eff_kwhm2","e_array_kwh","e_grid_kwh","pr"],"title":"MonthRow","description":"One month of ``summary.monthly`` (twelve rows)."},"NearShading":{"properties":{"row_to_row_kwhm2":{"type":"number","title":"Row To Row Kwhm2","description":"Shading between rows, kWh/m²"},"terrain_kwhm2":{"type":"number","title":"Terrain Kwhm2","description":"Shading by the terrain, kWh/m²"},"objects_kwhm2":{"type":"number","title":"Objects Kwhm2","description":"Shading by the scene's objects, kWh/m²"}},"additionalProperties":true,"type":"object","required":["row_to_row_kwhm2","terrain_kwhm2","objects_kwhm2"],"title":"NearShading","description":"``summary.near_shading``: the near-shading irradiance loss of a scene run, split by\ncause. The three add up to the loss diagram's near-shading row (with its sign flipped)."},"OptionsIn":{"properties":{"module_model":{"anyOf":[{"type":"string","enum":["mermoud","desoto","cec","pvwatts"]},{"type":"null"}],"title":"Module Model","description":"Mirror of module.model for run-by-reference"},"inverter_mppt_inputs":{"anyOf":[{"type":"string","enum":["separate","shared"]},{"type":"null"}],"title":"Inverter Mppt Inputs","description":"MPPT inputs: one input per string when the strings fit (the default), or the strings sharing the inverter"},"module_stc_point":{"anyOf":[{"type":"string","enum":["datasheet_mpp","pnom"]},{"type":"null"}],"title":"Module Stc Point","description":"The one-diode model's third point at STC: through the datasheet maximum-power point (the default) or a maximum equal to the nominal power"},"inverter_efficiency_interpolation":{"anyOf":[{"type":"string","enum":["bilinear","parabolic_voltage_blend","sandia","sandia_voltage","flat","pvwatts"]},{"type":"null"}],"title":"Inverter Efficiency Interpolation","description":"Mirror of inverter.efficiency_interpolation"},"inverter_operating_point":{"anyOf":[{"type":"string","enum":["iv_curve","power_limits","ac_clip","mppt_window"]},{"type":"null"}],"title":"Inverter Operating Point","description":"Mirror of inverter.operating_point"},"inverter_dc_drop_reference":{"anyOf":[{"type":"string","enum":["mpp_current","operating_current"]},{"type":"null"}],"title":"Inverter Dc Drop Reference","description":"Mirror of inverter.dc_drop_reference"},"inverter_mppt_floor_behavior":{"anyOf":[{"type":"string","enum":["displaced","clamp"]},{"type":"null"}],"title":"Inverter Mppt Floor Behavior","description":"Mirror of inverter.mppt_floor_behavior"},"inverter_vmin_loss_bucket":{"anyOf":[{"type":"string","enum":["would_clip","vmin"]},{"type":"null"}],"title":"Inverter Vmin Loss Bucket","description":"Mirror of inverter.vmin_loss_bucket"},"inverter_iv_shading_current_scale":{"anyOf":[{"type":"string","enum":["electrical_fraction","off"]},{"type":"null"}],"title":"Inverter Iv Shading Current Scale","description":"Mirror of inverter.iv_shading_current_scale"},"far_shading_model":{"anyOf":[{"type":"string","enum":["crossing_fraction","hourly_gate"]},{"type":"null"}],"title":"Far Shading Model","description":"Far-shading (horizon) model: sub-hour crossing fraction or hourly gate"},"use_glob_inc_threshold":{"type":"boolean","title":"Use Glob Inc Threshold","description":"Zero the plane irradiance of timesteps below the low-light threshold","default":true},"glob_inc_threshold_wm2":{"type":"number","maximum":50.0,"minimum":0.0,"title":"Glob Inc Threshold Wm2","description":"Low-light threshold on the plane global irradiance, W/m²","default":7.0},"power_factor_row":{"anyOf":[{"type":"string","enum":["inside","separate"]},{"type":"null"}],"title":"Power Factor Row","description":"Power factor: inside the inverter and AC rows, or its own row"}},"additionalProperties":false,"type":"object","title":"OptionsIn"},"OutlineIn":{"properties":{"id":{"anyOf":[{"type":"string","maxLength":64,"minLength":1},{"type":"null"}],"title":"Id","description":"Outline id (unique; null = outline<n>)"},"name":{"type":"string","maxLength":64,"title":"Name","description":"Label of the outline","default":""},"vertices":{"items":{"items":{"type":"number"},"type":"array","maxItems":3,"minItems":3,"description":"[x, y, z]; unitless, the same unit as every other length in the scene"},"type":"array","maxItems":256,"minItems":3,"title":"Vertices","description":"Closed polygon drawn flat for reference (site boundary, exclusion zone, road); never shades"}},"additionalProperties":false,"type":"object","required":["vertices"],"title":"OutlineIn"},"ParsedSceneOut":{"properties":{"scene":{"additionalProperties":true,"type":"object","title":"Scene","description":"The converted scene body"},"array_patch":{"additionalProperties":true,"type":"object","title":"Array Patch","description":"The racking fields the scene implies (track_mode, tilt, azimuth, collector width, GCR from the placement pitch, n_rows = placed devices; for trackers the rotation stops, backtracking and wind stow of the first tracker record): merge into `array` before running"},"notes":{"items":{"type":"string"},"type":"array","title":"Notes","description":"Conversion notes: approximations and records skipped"},"summary":{"$ref":"#/components/schemas/SceneSummaryOut"},"warnings":{"items":{"type":"string"},"type":"array","title":"Warnings","description":"Parser warnings on the converted scene"},"meta":{"additionalProperties":true,"type":"object","title":"Meta","description":"filename and records: count per PVsyst record kind read"}},"type":"object","required":["scene","array_patch","notes","summary","warnings","meta"],"title":"ParsedSceneOut","description":"`POST /api/parse-scene`: a PVsyst variant's 3D scene as a scene body."},"PlacementIn":{"properties":{"id":{"anyOf":[{"type":"string","maxLength":64,"minLength":1},{"type":"null"}],"title":"Id","description":"Placement id (unique; null = p<n>)"},"type":{"type":"string","maxLength":64,"minLength":1,"title":"Type","description":"Id of the device type placed"},"x":{"type":"number","title":"X","description":"Device centre x, east: the axis midpoint of a tracker, the plane centre of a rack, the ridge centre of an ewf type; unitless, the same unit as every other length in the scene"},"y":{"type":"number","title":"Y","description":"Device centre y, north; unitless, the same unit as every other length in the scene"},"z":{"type":"number","title":"Z","description":"Device centre z, up (the hub or plane centre height; ewf: the height of the faces' top edges); unitless, the same unit as every other length in the scene","default":0.0},"azimuth_deg":{"type":"number","maximum":360.0,"minimum":0.0,"title":"Azimuth Deg","description":"Facing azimuth, ° clockwise from north (tracker: the axis descends toward it; ewf: the ridge bearing, the faces at azimuth − 90 and + 90)"},"tilt_deg":{"type":"number","maximum":90.0,"minimum":-45.0,"title":"Tilt Deg","description":"Tilt toward azimuth_deg, ° (rack 0–90; tracker axis tilt −45–45; ewf: the face tilt 0–90)","default":0.0},"roll_deg":{"type":"number","maximum":45.0,"minimum":-45.0,"title":"Roll Deg","description":"Roll about the horizontal axis pointing toward azimuth_deg, °; positive leans the plane toward azimuth + 90 (rack; ignored for sat and ewf)","default":0.0},"string":{"anyOf":[{"type":"string","maxLength":64,"minLength":1},{"type":"null"}],"title":"String","description":"The string this device belongs to (module-level placements, a type of one string): for array.shade_mode strings_partition the string loses its direct light when a shadow touches any of its devices, for module_layout its I-V curve adds its devices' modules (null: the type's strings divide the device)"}},"additionalProperties":false,"type":"object","required":["type","x","y","azimuth_deg"],"title":"PlacementIn"},"PreferenceIn":{"properties":{"choices":{"additionalProperties":{"type":"string"},"type":"object","title":"Choices","description":"Model-tab choices to save: step id → option id (both stages)"}},"type":"object","required":["choices"],"title":"PreferenceIn"},"PrismObjectIn":{"properties":{"kind":{"type":"string","const":"prism","title":"Kind","default":"prism"},"id":{"anyOf":[{"type":"string","maxLength":64,"minLength":1},{"type":"null"}],"title":"Id","description":"Object id (unique; null = o<n>)"},"vertices":{"items":{"items":{"type":"number"},"type":"array","maxItems":4,"minItems":4,"description":"[x, y, z, h]: a base point at elevation z and the object's height h above it; unitless, the same unit as every other length in the scene"},"type":"array","maxItems":64,"minItems":3,"title":"Vertices","description":"Closed base polygon with a height per vertex; a non-convex base shades as its convex hull"}},"additionalProperties":false,"type":"object","required":["vertices"],"title":"PrismObjectIn"},"ProfileIn":{"properties":{"name":{"type":"string","maxLength":400,"title":"Name","description":"Your name, as reports print it","default":""},"business_name":{"type":"string","maxLength":400,"title":"Business Name","description":"Your business, as reports print it","default":""}},"type":"object","title":"ProfileIn"},"Ref":{"properties":{"id":{"type":"string","title":"Id","description":"Stored or library component id (met_/pan_/ond_ + 12 hex, or a library slug)"}},"additionalProperties":false,"type":"object","required":["id"],"title":"Ref"},"RunAccepted":{"properties":{"run_id":{"type":"string","title":"Run Id","description":"The run's id; `GET /v1/runs/{run_id}` reads it"},"status":{"type":"string","title":"Status","description":"`running`"},"links":{"$ref":"#/components/schemas/RunLinks","description":"Where the stored run will be"},"billing":{"anyOf":[{"$ref":"#/components/schemas/Billing"},{"type":"null"}],"description":"On a charged run, its units and price (reserved until the run ends)"}},"additionalProperties":true,"type":"object","required":["run_id","status","links"],"title":"RunAccepted","description":"The 202 of a run that finishes in the background."},"RunAnswer":{"properties":{"status":{"type":"string","title":"Status","description":"`completed`"},"run_id":{"type":"string","title":"Run Id","description":"The run's id (`run_…`)"},"engine_version":{"type":"string","title":"Engine Version","description":"The engine version that ran it"},"completed_at":{"type":"string","title":"Completed At","description":"When the engine returned, UTC (ISO 8601)"},"summary":{"$ref":"#/components/schemas/RunSummary","description":"Annual figures, the monthly table and the warnings"},"loss_diagram":{"items":{"$ref":"#/components/schemas/LossRow"},"type":"array","title":"Loss Diagram","description":"The loss diagram, row by row"},"series":{"anyOf":[{"$ref":"#/components/schemas/SeriesBlock"},{"type":"null"}],"description":"With `include_series`: the series per timestep"},"pvsyst_series":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Pvsyst Series","description":"With `include_pvsyst_series`: the series under PVsyst's identifiers, as `columns`, `units` and one list per identifier"},"billing":{"anyOf":[{"$ref":"#/components/schemas/Billing"},{"type":"null"}],"description":"On a charged run made with an account"},"charged":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Charged","description":"Whether the run was charged (absent on the free default project)"},"default_project":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Default Project","description":"`true` on the free default project"},"storage":{"anyOf":[{"$ref":"#/components/schemas/StorageAnswer"},{"type":"null"}],"description":"With a `storage` section"},"links":{"anyOf":[{"$ref":"#/components/schemas/RunLinks"},{"type":"null"}],"description":"On a run stored with an account"}},"additionalProperties":true,"type":"object","required":["status","run_id","engine_version","completed_at","summary","loss_diagram"],"title":"RunAnswer","description":"The answer of ``POST /v1/run``."},"RunIn":{"properties":{"site":{"$ref":"#/components/schemas/SiteIn"},"weather":{"anyOf":[{"$ref":"#/components/schemas/WeatherIn"},{"$ref":"#/components/schemas/Ref"}],"title":"Weather"},"array":{"$ref":"#/components/schemas/ArrayIn"},"module":{"anyOf":[{"$ref":"#/components/schemas/ModuleIn"},{"$ref":"#/components/schemas/Ref"}],"title":"Module"},"inverter":{"anyOf":[{"$ref":"#/components/schemas/InverterIn"},{"$ref":"#/components/schemas/Ref"}],"title":"Inverter"},"iam":{"$ref":"#/components/schemas/IAMIn"},"thermal":{"$ref":"#/components/schemas/ThermalIn"},"dc_losses":{"$ref":"#/components/schemas/DCLossesIn"},"ac_losses":{"$ref":"#/components/schemas/ACLossesIn"},"spectral":{"$ref":"#/components/schemas/SpectralIn"},"bifacial":{"anyOf":[{"$ref":"#/components/schemas/BifacialIn"},{"type":"null"}],"description":"Rear side; null = monofacial"},"lifetime":{"$ref":"#/components/schemas/LifetimeIn"},"scene":{"anyOf":[{"$ref":"#/components/schemas/SceneIn"},{"type":"null"}],"description":"3D scene; null = the flat array section"},"storage":{"anyOf":[{"$ref":"#/components/schemas/StorageIn"},{"type":"null"}],"description":"Battery, AC- or DC-coupled; null = no battery. The solar results stay storage-free; the response gains a storage block and storage.* rows"},"options":{"$ref":"#/components/schemas/OptionsIn"},"include_series":{"anyOf":[{"type":"boolean"},{"items":{"type":"string"},"type":"array"}],"title":"Include Series","description":"Inline the hourly series: true for every series, or a list of names (for example [\"p_grid_w\"]) for only those","default":false},"include_pvsyst_series":{"type":"boolean","title":"Include Pvsyst Series","description":"Inline the hourly series under PVsyst's variable identifiers and units (HSol … E_Grid, Yr … PR), for column-by-column comparison with a PVsyst hourly export","default":false},"include_per_year_diagram":{"type":"boolean","title":"Include Per Year Diagram","description":"Per-year loss diagrams (needs the lifetime loop; must be false)","default":false},"engine_version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Engine Version","description":"Pin the numerical engine version (YYYY.MM)"}},"additionalProperties":false,"type":"object","required":["site","weather","module","inverter"],"title":"RunIn"},"RunLinks":{"properties":{"run":{"type":"string","title":"Run","description":"`GET` this path for the stored request and answer"},"series_csv":{"type":"string","title":"Series Csv","description":"`GET` this path for the hourly series as CSV"}},"additionalProperties":true,"type":"object","required":["run","series_csv"],"title":"RunLinks","description":"``links``, on a run stored with an account (kept 365 days, free to read)."},"RunSummary":{"properties":{"p_nom_dc_kwp":{"type":"number","title":"P Nom Dc Kwp","description":"Plant DC nameplate, kWp"},"p_nom_ac_kw":{"type":"number","title":"P Nom Ac Kw","description":"Plant AC nameplate, kW: `array.n_inverters` × `inverter.p_nom_ac_w`"},"stc_reference_power_w":{"type":"number","title":"Stc Reference Power W","description":"The STC reference power the run used (entered or derived), W"},"ac_power_reference_w":{"type":"number","title":"Ac Power Reference W","description":"The power the AC loss fractions refer to, W"},"eta_stc":{"type":"number","title":"Eta Stc","description":"Module efficiency at STC, fraction"},"active_area_per_kwp":{"type":"number","title":"Active Area Per Kwp","description":"Module area per kWp, m²/kWp"},"e_grid_kwh":{"type":"number","title":"E Grid Kwh","description":"Energy to the grid, kWh"},"e_array_kwh":{"type":"number","title":"E Array Kwh","description":"DC energy at the inverter input, kWh"},"specific_yield_kwh_per_kwp":{"type":"number","title":"Specific Yield Kwh Per Kwp","description":"Energy to the grid per kWp of DC nameplate, kWh/kWp"},"glob_hor_kwhm2":{"type":"number","title":"Glob Hor Kwhm2","description":"Global horizontal irradiation, kWh/m²"},"glob_inc_kwhm2":{"type":"number","title":"Glob Inc Kwhm2","description":"Global irradiation on the module plane, kWh/m²"},"glob_eff_kwhm2":{"type":"number","title":"Glob Eff Kwhm2","description":"Effective irradiation after the angle-of-incidence, shading and soiling losses, kWh/m²"},"performance_ratio":{"type":"number","title":"Performance Ratio","description":"Specific yield over the plane irradiation in kWh/m² (per 1 kW/m²), fraction 0–1"},"capacity_factor":{"type":"number","title":"Capacity Factor","description":"Energy to the grid over the AC nameplate times the period's hours, fraction 0–1"},"power_factor":{"type":"number","title":"Power Factor","description":"Power factor of the energy to the grid"},"e_grid_apparent_kvah":{"type":"number","title":"E Grid Apparent Kvah","description":"Apparent energy to the grid, kVAh: `e_grid_kwh` over `power_factor`"},"e_grid_by_year_kwh":{"items":{"type":"number"},"type":"array","title":"E Grid By Year Kwh","description":"Energy to the grid per simulated year, kWh (one entry: a run is one year)"},"dc_wiring_r_ohm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Dc Wiring R Ohm","description":"DC wiring resistance of the ohmic model, Ω; null with the flat model"},"iam_resolved":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Iam Resolved","description":"The angle-of-incidence model the run used"},"racking":{"type":"string","title":"Racking","description":"The racking the run modelled (`array.track_mode`)"},"n_steps":{"type":"integer","title":"N Steps","description":"Timesteps in the weather"},"warnings":{"items":{"$ref":"#/components/schemas/RunWarning"},"type":"array","title":"Warnings","description":"Remarks on the run; none blocks it"},"monthly":{"items":{"$ref":"#/components/schemas/MonthRow"},"type":"array","title":"Monthly","description":"Twelve monthly rows"},"bifacial":{"anyOf":[{"$ref":"#/components/schemas/BifacialSummary"},{"type":"null"}],"description":"With a `bifacial` section"},"scene":{"anyOf":[{"$ref":"#/components/schemas/SceneCounts"},{"type":"null"}],"description":"With a `scene` section"},"scene_bins":{"anyOf":[{"items":{"$ref":"#/components/schemas/SceneBin"},"type":"array"},{"type":"null"}],"title":"Scene Bins","description":"With a `scene` section: the orientation bins"},"near_shading":{"anyOf":[{"$ref":"#/components/schemas/NearShading"},{"type":"null"}],"description":"With a `scene` section: the near-shading loss by cause"},"irradiance_tracking_steps":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Irradiance Tracking Steps","description":"With irradiance-optimised tracking: the timesteps the trackers lay flat"},"power_factor_loss_kwh":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Power Factor Loss Kwh","description":"With the power factor's own loss row (`options.power_factor_row`): the reactive-power loss, kWh"}},"additionalProperties":true,"type":"object","required":["p_nom_dc_kwp","p_nom_ac_kw","stc_reference_power_w","ac_power_reference_w","eta_stc","active_area_per_kwp","e_grid_kwh","e_array_kwh","specific_yield_kwh_per_kwp","glob_hor_kwhm2","glob_inc_kwhm2","glob_eff_kwhm2","performance_ratio","capacity_factor","power_factor","e_grid_apparent_kvah","e_grid_by_year_kwh","racking","n_steps","warnings","monthly"],"title":"RunSummary","description":"``summary``: annual figures over the weather period, the monthly table and the\nwarnings."},"RunWarning":{"properties":{"code":{"type":"string","title":"Code","description":"What the warning is about: `string_voc_above_vdc_max`, `string_vmp_above_mppt_max`, `string_vmp_below_mppt_min`, `dc_ac_ratio`, `scene_pitch`, `scene_modules`, `snow_not_modelled`, `module_model_pvwatts`, `generic_component`, or `note` for any other remark"},"field":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Field","description":"The request field it concerns, or null"},"message":{"type":"string","title":"Message","description":"The warning in words"}},"additionalProperties":true,"type":"object","required":["code","message"],"title":"RunWarning","description":"One entry of ``summary.warnings``. Warnings never block a run."},"SandiaInverterIn":{"properties":{"paco_w":{"type":"number","exclusiveMinimum":0.0,"title":"Paco W","description":"P_aco: AC power rating, W"},"pdco_w":{"type":"number","exclusiveMinimum":0.0,"title":"Pdco W","description":"P_dco: DC input that gives P_aco at V_dco, W"},"vdco_v":{"type":"number","exclusiveMinimum":0.0,"title":"Vdco V","description":"V_dco: DC voltage at which P_aco is reached, V"},"pso_w":{"type":"number","minimum":0.0,"title":"Pso W","description":"P_so: DC power to start the inversion, W"},"c0":{"type":"number","title":"C0","description":"C0: curvature of AC against DC power at V_dco, 1/W"},"c1":{"type":"number","title":"C1","description":"C1: linear change of P_dco with DC voltage, 1/V"},"c2":{"type":"number","title":"C2","description":"C2: linear change of P_so with DC voltage, 1/V"},"c3":{"type":"number","title":"C3","description":"C3: linear change of C0 with DC voltage, 1/V"},"pnt_w":{"type":"number","minimum":0.0,"title":"Pnt W","description":"P_nt: AC power drawn at night, W"}},"additionalProperties":false,"type":"object","required":["paco_w","pdco_w","vdco_v","pso_w","c0","c1","c2","c3","pnt_w"],"title":"SandiaInverterIn"},"SceneAxes":{"properties":{"x":{"type":"string","const":"east","title":"X","description":"+X axis of the scene frame (fixed: east)","default":"east"},"y":{"type":"string","const":"north","title":"Y","description":"+Y axis of the scene frame (fixed: north)","default":"north"},"z":{"type":"string","const":"up","title":"Z","description":"+Z axis of the scene frame (fixed: up)","default":"up"}},"additionalProperties":false,"type":"object","title":"SceneAxes"},"SceneBin":{"properties":{"kind":{"type":"string","title":"Kind","description":"`gft` fixed rack or `sat` single-axis tracker"},"tilt_deg":{"type":"number","title":"Tilt Deg","description":"The bin's tilt, °"},"azimuth_deg":{"type":"number","title":"Azimuth Deg","description":"The bin's azimuth, ° clockwise from north"},"modules":{"type":"integer","title":"Modules","description":"Modules in the bin"},"tables":{"items":{"type":"string"},"type":"array","title":"Tables","description":"Ids of the placements in the bin"}},"additionalProperties":true,"type":"object","required":["kind","tilt_deg","azimuth_deg","modules","tables"],"title":"SceneBin","description":"One orientation bin of ``summary.scene_bins``. A run blends its bins by module count;\nthe result is not split per bin."},"SceneCounts":{"properties":{"n_bins":{"type":"integer","title":"N Bins","description":"Orientation bins the tables were grouped into"},"n_tables":{"type":"integer","title":"N Tables","description":"Placements (tables, trackers, ridges) in the scene"},"n_objects":{"type":"integer","title":"N Objects","description":"Shading objects in the scene"},"origin":{"title":"Origin","description":"The scene's `origin` as sent, or null"},"backtracking_angle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Backtracking Angle","description":"`terrain_aware` or `common_angle` with trackers in the scene, null without"}},"additionalProperties":true,"type":"object","required":["n_bins","n_tables","n_objects"],"title":"SceneCounts","description":"``summary.scene``: what the run made of the scene."},"SceneFrame":{"properties":{"axes":{"$ref":"#/components/schemas/SceneAxes"},"azimuth_zero":{"type":"string","const":"true_north","title":"Azimuth Zero","description":"Azimuths count from true north (fixed)","default":"true_north"},"azimuth_direction":{"type":"string","const":"clockwise","title":"Azimuth Direction","description":"Azimuths increase clockwise (fixed)","default":"clockwise"},"lengths":{"type":"string","const":"unitless","title":"Lengths","description":"Scene lengths carry no unit; every length in a scene is in one unit of the user's choice (fixed)","default":"unitless"}},"additionalProperties":false,"type":"object","title":"SceneFrame"},"SceneIn":{"properties":{"version":{"type":"integer","const":2,"title":"Version","description":"Scene record version (2); version 1 is no longer accepted","default":2},"frame":{"$ref":"#/components/schemas/SceneFrame"},"origin":{"anyOf":[{"$ref":"#/components/schemas/SceneOrigin"},{"type":"null"}],"description":"Georeference of the scene origin (null = none); the sun and the site stay in the site section"},"types":{"items":{"$ref":"#/components/schemas/DeviceTypeIn"},"type":"array","maxItems":10,"minItems":1,"title":"Types","description":"Device types placed in the scene: any mix of fixed racks (gft) and trackers (sat), or east-west ridges (ewf) on their own with array.track_mode ewf"},"placements":{"items":{"$ref":"#/components/schemas/PlacementIn"},"type":"array","maxItems":40000,"minItems":1,"title":"Placements","description":"One placement per device"},"objects":{"items":{"oneOf":[{"$ref":"#/components/schemas/PrismObjectIn"},{"$ref":"#/components/schemas/WallObjectIn"},{"$ref":"#/components/schemas/TreeLineObjectIn"},{"$ref":"#/components/schemas/CylinderObjectIn"}],"discriminator":{"propertyName":"kind","mapping":{"cylinder":"#/components/schemas/CylinderObjectIn","prism":"#/components/schemas/PrismObjectIn","tree_line":"#/components/schemas/TreeLineObjectIn","wall":"#/components/schemas/WallObjectIn"}}},"type":"array","maxItems":2000,"title":"Objects","description":"Shading objects"},"outlines":{"items":{"$ref":"#/components/schemas/OutlineIn"},"type":"array","maxItems":200,"title":"Outlines","description":"Drawn outlines (never shade)"}},"additionalProperties":false,"type":"object","required":["types","placements"],"title":"SceneIn"},"SceneOrigin":{"properties":{"latitude":{"type":"number","maximum":90.0,"minimum":-90.0,"title":"Latitude","description":"Origin latitude, ° (north positive)"},"longitude":{"type":"number","maximum":180.0,"minimum":-180.0,"title":"Longitude","description":"Origin longitude, ° (east positive)"},"elevation":{"type":"number","maximum":9000.0,"minimum":-500.0,"title":"Elevation","description":"Origin elevation above sea level, m (a georeference only; not a scene length)","default":0.0}},"additionalProperties":false,"type":"object","required":["latitude","longitude"],"title":"SceneOrigin"},"SceneSummaryOut":{"properties":{"types":{"type":"integer","title":"Types","description":"Device types"},"placements":{"type":"integer","title":"Placements","description":"Placed devices"},"objects":{"type":"integer","title":"Objects","description":"Shading objects"},"modules":{"type":"integer","title":"Modules","description":"Modules over every placement (the blend weights)"},"orientation_bins":{"type":"integer","title":"Orientation Bins","description":"Orientation bins the run will use: placements of one kind whose planes (roll included) round to the same 1° of tilt and 2.5° of azimuth share one; equals summary.scene.n_bins of POST /api/run"}},"type":"object","required":["types","placements","objects","modules","orientation_bins"],"title":"SceneSummaryOut","description":"Counts of a scene body as the parser read it."},"SceneValidationOut":{"properties":{"scene":{"additionalProperties":true,"type":"object","title":"Scene","description":"The scene body as the server read it (defaults filled)"},"summary":{"$ref":"#/components/schemas/SceneSummaryOut"},"warnings":{"items":{"type":"string"},"type":"array","title":"Warnings","description":"Parser warnings: an unused type, a roll on a tracker, a non-convex prism. The origin distance and the module total are checked by POST /api/run"}},"type":"object","required":["scene","summary","warnings"],"title":"SceneValidationOut","description":"`POST /api/scene/validate`: the scene as read, its counts and the parser's warnings."},"ScreenTransmittance":{"properties":{"leaf_on":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Leaf On","description":"Beam transmittance in the leaf-on months (5–10 north of the equator, the other months south), 0 opaque to 1 clear","default":0.0},"leaf_off":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Leaf Off","description":"Beam transmittance in the leaf-off months, 0 opaque to 1 clear","default":0.0}},"additionalProperties":false,"type":"object","title":"ScreenTransmittance"},"SeriesBlock":{"properties":{"sun.zenith_rad":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Sun.Zenith Rad","description":"Sun zenith angle, rad"},"sun.azimuth_rad":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Sun.Azimuth Rad","description":"Sun azimuth, rad clockwise from north"},"sun.elevation_rad":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Sun.Elevation Rad","description":"Sun elevation, rad"},"sun.h_extra_wm2":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Sun.H Extra Wm2","description":"Extraterrestrial irradiance on a horizontal plane, W/m²"},"sun.sun_up":{"anyOf":[{"items":{"type":"boolean"},"type":"array"},{"type":"null"}],"title":"Sun.Sun Up","description":"Whether the sun is up in the timestep (true or false)"},"array.surface_tilt_rad":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Array.Surface Tilt Rad","description":"Module plane tilt, rad"},"array.surface_azimuth_rad":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Array.Surface Azimuth Rad","description":"Module plane azimuth, rad clockwise from north"},"array.aoi_rad":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Array.Aoi Rad","description":"Angle of incidence of the beam on the module plane, rad"},"array.rotation_rad":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Array.Rotation Rad","description":"Tracker rotation, rad (0 on fixed racks)"},"array.shade_fraction":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Array.Shade Fraction","description":"Beam shaded fraction of the array, 0–1"},"poa.beam_inc_wm2":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Poa.Beam Inc Wm2","description":"Beam irradiance on the module plane, W/m²"},"poa.circumsolar_inc_wm2":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Poa.Circumsolar Inc Wm2","description":"Circumsolar diffuse irradiance on the module plane, W/m²"},"poa.isotropic_inc_wm2":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Poa.Isotropic Inc Wm2","description":"Isotropic sky diffuse irradiance on the module plane, W/m²"},"poa.horizon_inc_wm2":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Poa.Horizon Inc Wm2","description":"Horizon-band diffuse irradiance on the module plane, W/m²"},"poa.diffuse_sky_inc_wm2":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Poa.Diffuse Sky Inc Wm2","description":"Sky diffuse irradiance on the module plane, W/m²"},"poa.ground_inc_wm2":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Poa.Ground Inc Wm2","description":"Ground-reflected irradiance on the module plane, W/m²"},"poa.glob_inc_wm2":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Poa.Glob Inc Wm2","description":"Global irradiance on the module plane, W/m²"},"glob_eff_wm2":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Glob Eff Wm2","description":"Effective irradiance after the angle-of-incidence, shading and soiling losses, W/m²"},"t_cell_c":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"T Cell C","description":"Cell temperature, °C"},"t_cell_ss_c":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"T Cell Ss C","description":"Steady-state cell temperature, °C"},"module.p_mp_w":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Module.P Mp W","description":"One module's power at its maximum-power point, W"},"module.v_mp_v":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Module.V Mp V","description":"One module's voltage at its maximum-power point, V"},"module.i_mp_a":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Module.I Mp A","description":"One module's current at its maximum-power point, A"},"inverter.p_ac_w":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Inverter.P Ac W","description":"AC output of one inverter, W"},"inverter.p_dc_used_w":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Inverter.P Dc Used W","description":"DC power into one inverter, W"},"inverter.loss_efficiency_w":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Inverter.Loss Efficiency W","description":"Conversion loss of one inverter, W"},"inverter.loss_p_clip_w":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Inverter.Loss P Clip W","description":"Loss of one inverter at its AC power limit, W"},"inverter.loss_i_clip_w":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Inverter.Loss I Clip W","description":"Loss of one inverter at its input-current limit, W"},"inverter.loss_v_clip_w":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Inverter.Loss V Clip W","description":"Loss of one inverter above its maximum MPPT voltage, W"},"inverter.loss_threshold_w":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Inverter.Loss Threshold W","description":"Loss of one inverter below its power threshold, W"},"inverter.loss_v_mppt_min_w":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Inverter.Loss V Mppt Min W","description":"Loss of one inverter below its minimum MPPT voltage, W"},"inverter.loss_night_tare_w":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Inverter.Loss Night Tare W","description":"Night consumption of one inverter, W"},"inverter.v_dc_op_v":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Inverter.V Dc Op V","description":"DC operating voltage, V"},"inverter.i_dc_op_a":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Inverter.I Dc Op A","description":"DC operating current of one inverter, A"},"p_dc_w":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"P Dc W","description":"Plant DC power at the maximum-power point before the DC derates, W"},"p_dc_pre_spectral_w":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"P Dc Pre Spectral W","description":"Plant DC power before the spectral correction, W"},"p_dc_mpp_w":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"P Dc Mpp W","description":"Plant DC power at the maximum-power point after the DC derates and the wiring loss, W"},"ohm_loss_w":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Ohm Loss W","description":"Plant DC wiring loss, W"},"p_ac_w":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"P Ac W","description":"Plant inverter AC output, W"},"p_grid_w":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"P Grid W","description":"Plant power to the grid after the AC losses, W"},"bifacial.rear_effective_wm2":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Bifacial.Rear Effective Wm2","description":"Rear irradiance times the bifaciality factor, W/m²"},"bifacial.front_reflect_wm2":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Bifacial.Front Reflect Wm2","description":"Ground-reflected irradiance on the front side, W/m²"},"bifacial.GlobGnd":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Bifacial.Globgnd","description":"Global irradiance on the ground (PVsyst GlobGnd), W/m²"},"bifacial.DiffGnd":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Bifacial.Diffgnd","description":"Diffuse irradiance on the ground (PVsyst DiffGnd), W/m²"},"bifacial.ReflBck":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Bifacial.Reflbck","description":"Ground-reflected irradiance on the rear (PVsyst ReflBck), W/m²"},"bifacial.ReflFrt":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Bifacial.Reflfrt","description":"Ground-reflected irradiance on the front (PVsyst ReflFrt), W/m²"},"bifacial.DifSBak":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Bifacial.Difsbak","description":"Sky diffuse irradiance on the rear (PVsyst DifSBak), W/m²"},"bifacial.BmIncBk":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Bifacial.Bmincbk","description":"Beam irradiance incident on the rear (PVsyst BmIncBk), W/m²"},"bifacial.BIAMFBk":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Bifacial.Biamfbk","description":"PVsyst rear-side variable BIAMFBk, W/m²"},"bifacial.BmSFBak":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Bifacial.Bmsfbak","description":"PVsyst rear-side variable BmSFBak, W/m²"},"bifacial.BeamBak":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Bifacial.Beambak","description":"Beam irradiance on the rear (PVsyst BeamBak), W/m²"},"bifacial.BackShd":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Bifacial.Backshd","description":"Rear-side shading loss (PVsyst BackShd), W/m²"},"bifacial.GlobBak":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Bifacial.Globbak","description":"Global irradiance on the rear (PVsyst GlobBak), W/m²"},"storage.p_charge_ac_w":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Storage.P Charge Ac W","description":"Grid injection given up to charge the battery, W"},"storage.p_discharge_ac_w":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Storage.P Discharge Ac W","description":"Grid injection the battery adds, W"},"storage.p_poi_w":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Storage.P Poi W","description":"Grid injection with the battery, W"},"storage.p_curtailed_w":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Storage.P Curtailed W","description":"Power cut at the grid power limitation after the battery, W"},"storage.soc_kwh":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Storage.Soc Kwh","description":"Stored energy at the end of the timestep, kWh"},"storage.p_charge_dc_w":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Storage.P Charge Dc W","description":"DC power into the battery (DC coupling), W"},"storage.p_clip_captured_dc_w":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Storage.P Clip Captured Dc W","description":"DC power the battery captures above the inverter's AC ceiling or input-current limit (DC coupling), W"},"storage.p_inverter_input_given_up_dc_w":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Storage.P Inverter Input Given Up Dc W","description":"Inverter input given up where the input-current limit binds (DC coupling), W"},"storage.p_discharge_dc_w":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Storage.P Discharge Dc W","description":"DC power the battery delivers to the inverter (DC coupling), W"}},"additionalProperties":true,"type":"object","title":"SeriesBlock","description":"``series``, with `include_series`: one value per weather timestep, in the weather's order. `true` returns every series the run has; a list of names returns those. The bifacial series come with a `bifacial` section, the storage series with a `storage` section."},"SimpleRunAnswer":{"properties":{"status":{"type":"string","title":"Status","description":"`completed`"},"run_id":{"type":"string","title":"Run Id","description":"The run's id (`run_…`)"},"engine_version":{"type":"string","title":"Engine Version","description":"The engine version that ran it"},"completed_at":{"type":"string","title":"Completed At","description":"When the engine returned, UTC (ISO 8601)"},"summary":{"$ref":"#/components/schemas/RunSummary","description":"Annual figures, the monthly table and the warnings"},"loss_diagram":{"items":{"$ref":"#/components/schemas/LossRow"},"type":"array","title":"Loss Diagram","description":"The loss diagram, row by row"},"series":{"anyOf":[{"$ref":"#/components/schemas/SeriesBlock"},{"type":"null"}],"description":"With `include_series`: the series per timestep"},"pvsyst_series":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Pvsyst Series","description":"With `include_pvsyst_series`: the series under PVsyst's identifiers, as `columns`, `units` and one list per identifier"},"billing":{"anyOf":[{"$ref":"#/components/schemas/Billing"},{"type":"null"}],"description":"On a charged run made with an account"},"charged":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Charged","description":"Whether the run was charged (absent on the free default project)"},"default_project":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Default Project","description":"`true` on the free default project"},"storage":{"anyOf":[{"$ref":"#/components/schemas/StorageAnswer"},{"type":"null"}],"description":"With a `storage` section"},"links":{"anyOf":[{"$ref":"#/components/schemas/RunLinks"},{"type":"null"}],"description":"On a run stored with an account"},"request":{"additionalProperties":true,"type":"object","title":"Request","description":"The full request the run used; edit it and send it to `POST /v1/run`"},"defaults_applied":{"items":{"$ref":"#/components/schemas/DefaultApplied"},"type":"array","title":"Defaults Applied","description":"Each value the expansion chose that you did not send"}},"additionalProperties":true,"type":"object","required":["status","run_id","engine_version","completed_at","summary","loss_diagram","request","defaults_applied"],"title":"SimpleRunAnswer","description":"The answer of ``POST /v1/run/simple``: that of ``POST /v1/run`` with the request it\nran and the values it assumed."},"SimpleRunIn":{"properties":{"latitude":{"type":"number","maximum":90.0,"minimum":-90.0,"title":"Latitude","description":"Site latitude, ° (north positive)"},"longitude":{"type":"number","maximum":180.0,"minimum":-180.0,"title":"Longitude","description":"Site longitude, ° (east positive)"},"system_capacity_kw":{"anyOf":[{"type":"number","maximum":5000000.0,"exclusiveMinimum":0.0},{"type":"null"}],"title":"System Capacity Kw","description":"DC nameplate at STC, kW (null = modules × module_power_w)"},"modules":{"anyOf":[{"type":"integer","maximum":10000000.0,"minimum":1.0},{"type":"null"}],"title":"Modules","description":"Number of modules (null = from the capacity)"},"module_power_w":{"anyOf":[{"type":"number","maximum":2000.0,"exclusiveMinimum":0.0},{"type":"null"}],"title":"Module Power W","description":"Nameplate power of one module at STC, W (null = the capacity over the modules, else about 500 W)"},"module_type":{"type":"string","enum":["standard","premium","thin_film"],"title":"Module Type","description":"PVWatts module type: sets the temperature coefficient (−0.37, −0.35, −0.32 %/°C), the efficiency (19, 21, 18 %) and the technology when they are not given","default":"standard"},"module_efficiency":{"anyOf":[{"type":"number","maximum":0.5,"exclusiveMinimum":0.02},{"type":"null"}],"title":"Module Efficiency","description":"Module efficiency at STC, fraction (null = the module type's)"},"temperature_coefficient":{"anyOf":[{"type":"number","maximum":0.0,"minimum":-0.02},{"type":"null"}],"title":"Temperature Coefficient","description":"Power temperature coefficient, 1/°C, e.g. -0.0035 (null = the module type's)"},"bifaciality":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Bifaciality","description":"Rear/front efficiency ratio, fraction (0 = monofacial; fixed and single_axis racking only)","default":0.0},"racking":{"type":"string","enum":["fixed","rooftop","single_axis"],"title":"Racking","description":"fixed (rows on the ground or a flat roof), rooftop (flush on a roof, no row-to-row shading) or single_axis (trackers with backtracking)","default":"fixed"},"tilt_deg":{"anyOf":[{"type":"number","maximum":90.0,"minimum":0.0},{"type":"null"}],"title":"Tilt Deg","description":"Plane tilt, ° (tracker: axis tilt; null = 20, tracker 0)"},"azimuth_deg":{"anyOf":[{"type":"number","maximum":360.0,"minimum":0.0},{"type":"null"}],"title":"Azimuth Deg","description":"Bearing the plane faces, ° clockwise from north (tracker: the axis; null = toward the equator, 180 for a tracker)"},"gcr":{"type":"number","maximum":1.0,"exclusiveMinimum":0.0,"title":"Gcr","description":"Ground cover ratio (unused on rooftop)","default":0.4},"dc_ac_ratio":{"type":"number","maximum":3.0,"exclusiveMinimum":0.5,"title":"Dc Ac Ratio","description":"DC nameplate over AC nameplate when inverter_ac_kw is null","default":1.2},"inverter_ac_kw":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"null"}],"title":"Inverter Ac Kw","description":"Inverter AC nameplate, kW: the output clips there; DC kW over it must lie in dc_ac_ratio's range (null = DC kW / dc_ac_ratio)"},"inverter_efficiency":{"type":"number","maximum":1.0,"exclusiveMinimum":0.5,"title":"Inverter Efficiency","description":"Inverter efficiency, fraction: the flat efficiency, or the nominal efficiency of the pvwatts curve","default":0.96},"inverter_model":{"type":"string","enum":["flat","pvwatts"],"title":"Inverter Model","description":"flat (one efficiency at every load) or pvwatts (the PVWatts part-load curve, Dobos 2014)","default":"flat"},"losses_percent":{"anyOf":[{"type":"number","maximum":80.0,"minimum":0.0},{"type":"null"}],"title":"Losses Percent","description":"Total of the soiling, mismatch, wiring, connection, LID, nameplate and availability losses, % (null = 11.42, PVWatts's defaults; shading, snow and temperature are modelled)"},"weather":{"anyOf":[{"$ref":"#/components/schemas/WeatherIn"},{"$ref":"#/components/schemas/Ref"},{"type":"null"}],"title":"Weather","description":"Hourly weather inline or {\"id\": \"met_…\"} (null = the typical year at the coordinates, from `weather_source`)"},"weather_source":{"type":"string","enum":["auto","nsrdb","pvgis"],"title":"Weather Source","description":"Where the typical year comes from when `weather` is null: `auto` (the NSRDB GOES TMY in the Americas, else the PVGIS 5.3 TMY), `nsrdb` or `pvgis`","default":"auto"},"timezone":{"anyOf":[{"type":"number","maximum":14.0,"minimum":-14.0},{"type":"null"}],"title":"Timezone","description":"UTC offset, h (standard time): with the typical year, the clock of the hourly answer; with your own weather, the zone of its labels (null = the location's standard time from its IANA zone, else round(longitude / 15))"},"elevation":{"anyOf":[{"type":"number","maximum":9000.0,"minimum":-500.0},{"type":"null"}],"title":"Elevation","description":"Elevation, m (null = the typical year's elevation, else 0)"},"albedo":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Albedo","description":"Ground albedo, fraction","default":0.2},"include_series":{"anyOf":[{"type":"boolean"},{"items":{"type":"string"},"type":"array"}],"title":"Include Series","description":"Inline the hourly series: true for every series, or a list of names ([\"p_grid_w\"])","default":false}},"additionalProperties":false,"type":"object","required":["latitude","longitude"],"title":"SimpleRunIn","description":"A location and a system size; every other value has a default (guide: GET\n/api/docs/simple_run)."},"SiteIn":{"properties":{"latitude":{"type":"number","maximum":90.0,"minimum":-90.0,"title":"Latitude","description":"Site latitude, ° (north positive)"},"design_t_min_c":{"anyOf":[{"type":"number","maximum":60.0,"minimum":-90.0},{"type":"null"}],"title":"Design T Min C","description":"Design low ambient temperature of the string-voltage check, °C (null = the weather's lowest ambient temperature); read by the check only, not by the energy model"},"longitude":{"type":"number","maximum":180.0,"minimum":-180.0,"title":"Longitude","description":"Site longitude, ° (east positive)"},"elevation":{"type":"number","maximum":9000.0,"minimum":-500.0,"title":"Elevation","description":"Elevation, m (sets the ISA pressure and the air-mass altitude factor)","default":0.0},"timezone":{"type":"number","maximum":14.0,"minimum":-14.0,"title":"Timezone","description":"UTC offset, h (standard time, no DST): the zone of inline weather's timestamps; with a stored weather year (by id), the clock of the hourly answer (the sun runs on the year's own zone)","default":0.0},"albedo_monthly":{"items":{"type":"number","maximum":1.0,"minimum":0.0},"type":"array","maxItems":12,"minItems":12,"title":"Albedo Monthly","description":"Monthly ground albedo, fraction"},"soiling_monthly":{"items":{"type":"number","maximum":1.0,"minimum":0.0},"type":"array","maxItems":12,"minItems":12,"title":"Soiling Monthly","description":"Monthly soiling derate, fraction"},"horizon_azimuths_deg":{"items":{"type":"number"},"type":"array","maxItems":720,"title":"Horizon Azimuths Deg","description":"Far-shading ridgeline azimuths, ° clockwise from north"},"horizon_elevations_deg":{"items":{"type":"number"},"type":"array","maxItems":720,"title":"Horizon Elevations Deg","description":"Far-shading ridgeline elevations, ° above horizontal"},"use_horizon":{"type":"boolean","title":"Use Horizon","description":"Apply horizon shading (false = flat horizon, profile retained)","default":true},"use_soiling":{"type":"boolean","title":"Use Soiling","description":"Apply the soiling schedule (false = zero soiling, schedule retained)","default":true},"horizon_albedo_fraction":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Horizon Albedo Fraction","description":"Share of the ground-reflected light counted in front of the horizon: multiplies the horizon albedo factor (1 = height rule only, 0 = none)","default":1.0},"sun_model":{"type":"string","enum":["pvsyst","spa","michalsky","spa_ssc"],"title":"Sun Model","description":"Solar position ephemeris","default":"pvsyst"},"sun_timing":{"type":"string","enum":["sunlit_midpoint","interval_midpoint"],"title":"Sun Timing","description":"Where in the interval the geometry is evaluated","default":"sunlit_midpoint"},"night_irradiance":{"type":"string","enum":["zero","isotropic_diffuse"],"title":"Night Irradiance","description":"How an interval with no sunlit part is handled","default":"zero"},"snow_model":{"type":"string","enum":["off","townsend"],"title":"Snow Model","description":"Snow loss: off, or townsend (Townsend's monthly model)","default":"off"},"snowfall_monthly_cm":{"anyOf":[{"items":{"type":"number","minimum":0.0},"type":"array","maxItems":12,"minItems":12},{"type":"null"}],"title":"Snowfall Monthly Cm","description":"Monthly snowfall, cm (null = the snow step is unavailable)"},"snow_events_monthly":{"anyOf":[{"items":{"type":"number","maximum":31.0,"minimum":0.0},"type":"array","maxItems":12,"minItems":12},{"type":"null"}],"title":"Snow Events Monthly","description":"Monthly snow events: days with more than 2.54 cm of snow (a monthly mean may be fractional)"},"relative_humidity_monthly":{"anyOf":[{"items":{"type":"number","maximum":100.0,"minimum":0.0},"type":"array","maxItems":12,"minItems":12},{"type":"null"}],"title":"Relative Humidity Monthly","description":"Monthly mean relative humidity, % (used by the snow model only when the weather has no humidity)"},"snow_lower_edge_height_m":{"type":"number","maximum":20.0,"minimum":0.0,"title":"Snow Lower Edge Height M","description":"Height of the lower edge of the modules above the ground, m (snow model)","default":1.0},"snow_string_factor":{"type":"number","maximum":1.0,"exclusiveMinimum":0.0,"title":"Snow String Factor","description":"Townsend string factor: 1 with one string across the table, 0.75 with more","default":1.0},"snow_angle_of_repose_deg":{"type":"number","exclusiveMaximum":90.0,"exclusiveMinimum":0.0,"title":"Snow Angle Of Repose Deg","description":"Angle of repose of piled snow, ° (Townsend: 40)","default":40.0}},"additionalProperties":false,"type":"object","required":["latitude","longitude"],"title":"SiteIn"},"SiteMonthlyIn":{"properties":{"t_mean_monthly_c":{"anyOf":[{"items":{"type":"number"},"type":"array","maxItems":12,"minItems":12},{"type":"null"}],"title":"T Mean Monthly C"},"weather":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Weather"}},"type":"object","title":"SiteMonthlyIn"},"SpectralIn":{"properties":{"mode":{"type":"string","enum":["auto","on","off"],"title":"Mode","description":"Spectral correction mode: auto runs it for cadmium telluride modules only (when the weather allows it), on runs it for any module with a published or custom coefficient set for its technology, off never","default":"auto"},"model":{"type":"string","enum":["lee_panchula","king"],"title":"Model","description":"Spectral model: lee_panchula (air mass and precipitable water) or king (air-mass polynomial with De Soto's coefficients, on the effective irradiance)","default":"lee_panchula"},"coefficients":{"anyOf":[{"items":{"type":"number"},"type":"array","maxItems":6,"minItems":6},{"type":"null"}],"title":"Coefficients","description":"Lee & Panchula c₀…c₅ (null = published set for the technology)"},"airmass_method":{"type":"string","enum":["kasten_1966","kasten_young_1989"],"title":"Airmass Method","description":"Air-mass model","default":"kasten_1966"},"am_max":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"null"}],"title":"Am Max","description":"Forced upper air-mass cap"},"application":{"type":"string","enum":["power_ratio","effective_irradiance"],"title":"Application","description":"Where the correction is applied","default":"power_ratio"}},"additionalProperties":false,"type":"object","title":"SpectralIn"},"StartIn":{"properties":{"email":{"type":"string","maxLength":400,"title":"Email","description":"The address the sign-in link goes to"},"accept_terms":{"type":"boolean","title":"Accept Terms","description":"True: the caller agrees to the Terms and Conditions (required)","default":false},"terms_version":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Terms Version","description":"The version agreed to: X-Terms-Version of GET /api/terms"}},"type":"object","required":["email"],"title":"StartIn"},"StorageAnswer":{"properties":{"coupling":{"type":"string","title":"Coupling","description":"`ac` or `dc`"},"dispatch":{"type":"string","title":"Dispatch","description":"`clip`, `force_cycle` or `timed`"},"power_kw":{"type":"number","title":"Power Kw","description":"Battery power, kW"},"capacity_kwh":{"type":"number","title":"Capacity Kwh","description":"Battery capacity, kWh"},"usable_kwh":{"type":"number","title":"Usable Kwh","description":"Capacity inside the state-of-charge window, kWh"},"interconnect_limit_kw":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Interconnect Limit Kw","description":"The grid-connection target the battery works against, kW"},"round_trip_efficiency":{"type":"number","title":"Round Trip Efficiency","description":"Round-trip efficiency, fraction"},"ac_conversion_efficiency":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ac Conversion Efficiency","description":"Battery inverter efficiency (AC coupling), fraction; null with DC"},"eta_charge":{"type":"number","title":"Eta Charge","description":"Charge efficiency, fraction"},"eta_discharge":{"type":"number","title":"Eta Discharge","description":"Discharge efficiency, fraction"},"e_solar_kwh":{"type":"number","title":"E Solar Kwh","description":"Grid injection before the battery, kWh"},"e_charge_kwh":{"type":"number","title":"E Charge Kwh","description":"Grid injection given up to charge, kWh"},"e_discharge_kwh":{"type":"number","title":"E Discharge Kwh","description":"Grid injection the battery adds, kWh"},"e_charge_dc_kwh":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"E Charge Dc Kwh","description":"DC energy into the battery (DC coupling), kWh"},"e_clip_captured_dc_kwh":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"E Clip Captured Dc Kwh","description":"DC energy captured above the inverter's AC ceiling or input-current limit (DC coupling), kWh"},"e_inverter_input_given_up_dc_kwh":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"E Inverter Input Given Up Dc Kwh","description":"Inverter input given up where the input-current limit binds (DC coupling), kWh"},"e_discharge_dc_kwh":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"E Discharge Dc Kwh","description":"DC energy the battery delivers to the inverter (DC coupling), kWh"},"e_poi_kwh":{"type":"number","title":"E Poi Kwh","description":"Grid injection with the battery, kWh"},"e_loss_conversion_kwh":{"type":"number","title":"E Loss Conversion Kwh","description":"Battery conversion loss, kWh"},"delta_soc_kwh":{"type":"number","title":"Delta Soc Kwh","description":"Stored energy at the end less at the start, kWh"},"e_above_target_kwh":{"type":"number","title":"E Above Target Kwh","description":"Grid injection after the battery above the interconnect target, kWh"},"e_curtailed_after_storage_kwh":{"type":"number","title":"E Curtailed After Storage Kwh","description":"Energy cut at the grid power limitation after the battery, kWh"},"equivalent_full_cycles":{"type":"number","title":"Equivalent Full Cycles","description":"Energy drawn from the cells over the usable capacity"},"mean_soc_fraction":{"type":"number","title":"Mean Soc Fraction","description":"Mean state of charge, fraction of the capacity"},"soc_start_kwh":{"type":"number","title":"Soc Start Kwh","description":"Stored energy before the first timestep, kWh"},"soc_end_kwh":{"type":"number","title":"Soc End Kwh","description":"Stored energy after the last timestep, kWh"},"monthly":{"items":{"$ref":"#/components/schemas/StorageMonth"},"type":"array","title":"Monthly","description":"Twelve monthly rows"},"soc_profile_pct":{"items":{"type":"number"},"type":"array","title":"Soc Profile Pct","description":"Mean state of charge at the end of each hour of the day (24 values), % of the capacity"}},"additionalProperties":true,"type":"object","required":["coupling","dispatch","power_kw","capacity_kwh","usable_kwh","round_trip_efficiency","eta_charge","eta_discharge","e_solar_kwh","e_charge_kwh","e_discharge_kwh","e_poi_kwh","e_loss_conversion_kwh","delta_soc_kwh","e_above_target_kwh","e_curtailed_after_storage_kwh","equivalent_full_cycles","mean_soc_fraction","soc_start_kwh","soc_end_kwh","monthly","soc_profile_pct"],"title":"StorageAnswer","description":"The top-level ``storage`` block, with a `storage` section: the inputs as used and the\nannual balances. Field page `storage` gives each figure's definition and how they close."},"StorageIn":{"properties":{"coupling":{"type":"string","enum":["ac","dc"],"title":"Coupling","description":"ac = the battery on the AC side, charging from and delivering to the system's grid injection; dc = the battery on the DC bus ahead of the PV inverter, charging first from the DC power the inverter cannot take (above its AC ceiling or its input-current limit) and delivering through the same inverter","default":"ac"},"power_kw":{"type":"number","exclusiveMinimum":0.0,"title":"Power Kw","description":"Power rating, kW (AC for ac coupling, DC at the inverter input for dc coupling): delivered power ≤ P; the charge draw is capped at P/η_c"},"capacity_kwh":{"type":"number","exclusiveMinimum":0.0,"title":"Capacity Kwh","description":"Nameplate energy, kWh (duration = capacity / power)"},"round_trip_efficiency":{"type":"number","maximum":1.0,"exclusiveMinimum":0.0,"title":"Round Trip Efficiency","description":"Round trip of the battery system, fraction; applied half on charge, half on discharge; with ac coupling the discharge half also passes the AC conversion efficiency, with dc coupling the PV inverter's own efficiency converts the delivered power","default":0.88},"dispatch":{"type":"string","enum":["clip","force_cycle","timed"],"title":"Dispatch","description":"clip = charge from the surplus (above the interconnect target for ac, the inverter's clipped DC power for dc) and discharge in the scheduled hours; force_cycle = one full usable-window cycle per day, refilled from any production with a clip lookahead; timed = charge from any production outside the discharge window, deliver a flat power inside it (min(P, stored energy / window length), fixed at the window's first hour)","default":"clip"},"interconnect_limit_kw":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"null"}],"title":"Interconnect Limit Kw","description":"Interconnect target, kW: the POI level the dispatch works against (soft: injection the battery does not take passes and is counted in e_above_target_kwh; a POI limit in ac_losses clips). Required for ac coupling with clip or force_cycle; with dc coupling it caps the inverter output (before the AC losses) while the battery discharges, under every dispatch, and null = the system AC nameplate; ac-coupled timed dispatch does not use it"},"dispatch_schedule":{"items":{"type":"integer"},"type":"array","maxItems":24,"title":"Dispatch Schedule","description":"Hour-of-day flags (0/1, 24 entries or []) gating discharge only; [] = every hour; index = hour of the weather timestamp in the site's fixed UTC offset, no daylight-saving shift, which labels the start of its interval (18:00–22:00 = flags 18–21); timed dispatch needs at least one flag set (its discharge window) and at least one flag clear (its charging hours)"},"soc_min":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Soc Min","description":"SOC floor, fraction of nameplate (reserve)","default":0.0},"soc_max":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Soc Max","description":"SOC ceiling, fraction of nameplate","default":1.0},"soc_initial":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Soc Initial","description":"State of charge before the first step, fraction of nameplate (clamped into the window)","default":0.0},"ac_conversion_efficiency":{"anyOf":[{"type":"number","maximum":1.0,"exclusiveMinimum":0.0},{"type":"null"}],"title":"Ac Conversion Efficiency","description":"ac coupling only: the conversion on the discharge side, fraction; null = the inverter's peak efficiency (max_efficiency, or the maximum of its part-load curve)"},"clip_lookahead_hours":{"type":"number","maximum":168.0,"minimum":0.0,"title":"Clip Lookahead Hours","description":"force_cycle only: perfect-foresight window over the realised series in which coming clipping is left to fill the battery, h","default":14.0}},"additionalProperties":false,"type":"object","required":["power_kw","capacity_kwh"],"title":"StorageIn","description":"Battery: AC-coupled on the system's grid injection, or DC-coupled on the inverter\ninput with the inverter and the AC losses applied again. Field pages: storage,\nstorage.<field>."},"StorageMonth":{"properties":{"month":{"type":"integer","title":"Month","description":"Month, 1–12"},"e_solar_kwh":{"type":"number","title":"E Solar Kwh","description":"Grid injection before the battery, kWh"},"e_charge_kwh":{"type":"number","title":"E Charge Kwh","description":"Grid injection given up to charge, kWh"},"e_discharge_kwh":{"type":"number","title":"E Discharge Kwh","description":"Grid injection the battery adds, kWh"},"e_poi_kwh":{"type":"number","title":"E Poi Kwh","description":"Grid injection with the battery, kWh"},"e_charge_dc_kwh":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"E Charge Dc Kwh","description":"DC energy into the battery (DC coupling), kWh"},"e_discharge_dc_kwh":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"E Discharge Dc Kwh","description":"DC energy the battery delivers to the inverter (DC coupling), kWh"}},"additionalProperties":true,"type":"object","required":["month","e_solar_kwh","e_charge_kwh","e_discharge_kwh","e_poi_kwh"],"title":"StorageMonth","description":"One month of ``storage.monthly``."},"TermsIn":{"properties":{"accept_terms":{"type":"boolean","title":"Accept Terms","description":"True: the caller agrees to the Terms and Conditions (required)","default":false},"terms_version":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Terms Version","description":"The version agreed to: X-Terms-Version of GET /api/terms"}},"type":"object","title":"TermsIn"},"ThermalIn":{"properties":{"u_c":{"type":"number","maximum":100.0,"minimum":0.0,"title":"U C","description":"Constant heat-loss factor, W/m²K (Ground 29, Rooftop 20, Canopy 25)","default":29.0},"u_v":{"type":"number","maximum":20.0,"minimum":0.0,"title":"U V","description":"Wind heat-loss factor, W/m²K per m/s","default":0.0},"absorptivity":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Absorptivity","description":"Absorptivity α","default":0.9},"model":{"type":"string","enum":["prilliman","faiman_steady","noct","noct_module","sapm","fuentes"],"title":"Model","description":"Thermal model: prilliman (Faiman balance with the operating efficiency and Prilliman's transient weighting), faiman_steady (Faiman balance with the rated efficiency, no lag), noct (the NOCT model of Duffie and Beckman with a 45 °C NOCT, 49 °C on rooftop racking), sapm (King 2004, coefficients by racking and module unless given) or fuentes (Fuentes 1987, the PVWatts version 5 implementation, with the module's heat capacity)","default":"prilliman"},"noct_standoff_adjust_c":{"type":"number","maximum":30.0,"minimum":0.0,"title":"Noct Standoff Adjust C","description":"Standoff adjustment of the NOCT model with the module's rated NOCT, °C: 0 for a ground or rack mount; 2, 6, 11, 18 for roof standoffs of 2.5–3.5, 1.5–2.5, 0.5–1.5 and below 0.5 inch","default":0.0},"sapm_a":{"anyOf":[{"type":"number","maximum":0.0},{"type":"null"}],"title":"Sapm A","description":"SAPM coefficient a (null = King's table: open rack, glass/glass for bifacial modules, glass/polymer otherwise; close roof mount on rooftops); give a, b and ΔT together"},"sapm_b":{"anyOf":[{"type":"number","maximum":0.0},{"type":"null"}],"title":"Sapm B","description":"SAPM coefficient b, per m/s (null = King's table)"},"sapm_delta_t":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Sapm Delta T","description":"SAPM conduction difference ΔT between the module back and the cells at 1000 W/m², °C (null = King's table)"},"module_mass_kg_m2":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"null"}],"title":"Module Mass Kg M2","description":"Unit mass for the transient model, kg/m² (≥ 20 invalid → 11)"},"transient":{"type":"boolean","title":"Transient","description":"Apply Prilliman's transient weight (false = TArray = TArrSS); the steady models faiman_steady and noct ignore it","default":true}},"additionalProperties":false,"type":"object","title":"ThermalIn"},"TopupIn":{"properties":{"amount_usd":{"type":"integer","title":"Amount Usd","description":"Top-up amount in USD: 10, 25, 50 or 100"}},"type":"object","required":["amount_usd"],"title":"TopupIn"},"TreeLineObjectIn":{"properties":{"kind":{"type":"string","const":"tree_line","title":"Kind","default":"tree_line"},"id":{"anyOf":[{"type":"string","maxLength":64,"minLength":1},{"type":"null"}],"title":"Id","description":"Object id (unique; null = o<n>)"},"vertices":{"items":{"items":{"type":"number"},"type":"array","maxItems":4,"minItems":4,"description":"[x, y, z, h]: a base point at elevation z and the object's height h above it; unitless, the same unit as every other length in the scene"},"type":"array","maxItems":256,"minItems":2,"title":"Vertices","description":"Open polyline of base points with a height per vertex; a screen with a seasonal transmittance"},"transmittance":{"$ref":"#/components/schemas/ScreenTransmittance"}},"additionalProperties":false,"type":"object","required":["vertices"],"title":"TreeLineObjectIn"},"UnavailabilityPeriod":{"properties":{"start":{"type":"string","format":"date-time","title":"Start","description":"Start of the shutdown, local standard time (the weather stamping)"},"hours":{"type":"number","maximum":8784.0,"exclusiveMinimum":0.0,"title":"Hours","description":"Duration of the shutdown, h"}},"additionalProperties":false,"type":"object","required":["start","hours"],"title":"UnavailabilityPeriod"},"WallObjectIn":{"properties":{"kind":{"type":"string","const":"wall","title":"Kind","default":"wall"},"id":{"anyOf":[{"type":"string","maxLength":64,"minLength":1},{"type":"null"}],"title":"Id","description":"Object id (unique; null = o<n>)"},"vertices":{"items":{"items":{"type":"number"},"type":"array","maxItems":4,"minItems":4,"description":"[x, y, z, h]: a base point at elevation z and the object's height h above it; unitless, the same unit as every other length in the scene"},"type":"array","maxItems":256,"minItems":2,"title":"Vertices","description":"Open polyline of base points with a height per vertex; opaque, shaded segment by segment"}},"additionalProperties":false,"type":"object","required":["vertices"],"title":"WallObjectIn"},"WeatherIn":{"properties":{"timestamps":{"anyOf":[{"items":{"type":"string","format":"date-time"},"type":"array"},{"type":"null"}],"title":"Timestamps","description":"Interval-start labels in local standard time (uniform, strictly increasing, step divides a day)"},"start":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Start","description":"First interval start when timestamps are absent"},"step_hours":{"anyOf":[{"type":"number","maximum":24.0,"exclusiveMinimum":0.0},{"type":"null"}],"title":"Step Hours","description":"Uniform step, h, with start"},"glob_hor":{"items":{"type":"number"},"type":"array","maxItems":105120,"minItems":1,"title":"Glob Hor","description":"Global horizontal irradiance, W/m²"},"diff_hor":{"items":{"type":"number"},"type":"array","title":"Diff Hor","description":"Diffuse horizontal irradiance, W/m²"},"dni":{"items":{"type":"number"},"type":"array","title":"Dni","description":"Direct normal irradiance, W/m² (pvsyst_8 Perez recomputes beam from GlobHor − DiffHor)"},"t_amb":{"items":{"type":"number"},"type":"array","title":"T Amb","description":"Ambient temperature, °C"},"wind_vel":{"items":{"type":"number"},"type":"array","title":"Wind Vel","description":"Wind speed, m/s"},"pressure":{"items":{"type":"number"},"type":"array","title":"Pressure","description":"Station pressure, mbar (absent = 1013.25)"},"relative_humidity":{"items":{"type":"number"},"type":"array","title":"Relative Humidity","description":"Relative humidity, % (lets the engine estimate precipitable water, Gueymard 1994)"},"precipitable_water":{"items":{"type":"number"},"type":"array","title":"Precipitable Water","description":"Precipitable water, cm"}},"additionalProperties":false,"type":"object","required":["glob_hor","diff_hor","dni","t_amb","wind_vel"],"title":"WeatherIn"},"Problem":{"title":"Problem","type":"object","description":"RFC 9457 problem details. `code` names the problem, `field` the offending key (a dotted path, `scene.types.0.kind`), `errors` every schema failure.","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer"},"detail":{"type":"string"},"code":{"type":"string","enum":["billing_unavailable","component_not_found","engine_rejected","engine_version_unavailable","forbidden","geo_unavailable","internal_error","invalid_doc_key","invalid_link","invalid_scene","method_not_allowed","no_scene_in_file","not_built","not_found","payload_too_large","payment_required","rate_limited","reference_kind_mismatch","reference_not_found","run_failed","run_not_found","run_too_long","terms_not_accepted","terms_outdated","unauthorized","unknown_scene_example","unsupported_file","validation_error","weather_location_unavailable"]},"field":{"type":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string"},"message":{"type":"string"},"kind":{"type":"string"},"received":{}},"required":["field","message","kind"]}}},"required":["type","title","status","detail","code"],"additionalProperties":true}},"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"An API key `pvp_live_…` from the workbench's Account page. Needed where the service requires an account; an invalid key is always 401."}}},"tags":[{"name":"simulate","description":"Run the performance chain on a request, at the weather file's time step"},{"name":"scene","description":"3D site scenes: example bodies, validation, and import from a PVsyst variant file. A scene places fixed racks (`gft`) and single-axis trackers (`sat`) in any mix. A rooftop array is a gft type placed on the roof plane (tilt = the roof pitch, z = the height of the array centre); run it with row-to-row shading off (`array.inter_row_shading = false`) and no bifacial section. Tracker rotation limits, backtracking and stow are set in the array section, not per tracker."},{"name":"runs","description":"Your stored runs: every run made with an account, kept 365 days"},{"name":"components","description":"Component files, the public library and the store"},{"name":"weather","description":"Weather files and site helpers"},{"name":"docs","description":"Documentation pages and agent orientation"},{"name":"account","description":"Sign-in by emailed link, the caller's account (free units, balance, unit price), API keys, billing and the saved User Preference path"}]}