Modeling Object Inputs
Before running energy model simulations, integrations usually create and reuse modeling objects.
Location (POST /locations)
Body model: LocationCreateRequest
| Field | Type | Required | Notes |
|---|
name | string | yes | Display name |
latitude / longitude | number | yes | lat / lng are accepted as deprecated aliases |
elevation | number | no | Auto-enriched if omitted |
ashrae | number | no | Climate zone metadata |
streetAddress | string | no | Address metadata |
farShading | object | no | Horizon profile wrapper |
soiling | monthly dict | no | Monthly 0-1 factors |
weatherData | object | no | Optional nested weather create payload |
Weather Data (POST /weatherdata)
Body model: WeatherDataCreateRequest
| Field | Type | Required | Notes |
|---|
weatherDataSource | string | conditional | Use non-provided for provider-backed sourcing |
locationId or globalLocationId | integer/string | no | Optional association to an existing location |
ghi, dhi, windSpeed, temperature | number arrays | conditional | Required when providing inline arrays |
date | integer array | conditional | Required unless exactly 8760 rows |
dni, relativeHumidity, poa | number arrays | no | Optional enrichments |
soiling | monthly dict | no | Monthly 0-1 factors |
Weather arrays must have equal lengths. Validation errors return 400 for invalid payload semantics.
Module
File Upload (POST /modules)
- Content type: multipart form-data
- Required part:
file (.pan)
- API parses and stores
properties and optional AOI curve automatically.
JSON (POST /modules/json)
Body model: ModuleCreateRequest
| Field | Type | Required | Notes |
|---|
name | string | yes | Display name |
properties | object | yes | Parsed or manually authored module properties |
aoi | object | no | AOI curve data |
Inverter
File Upload (POST /inverters)
- Content type: multipart form-data
- Required part:
file (.ond)
- API parses and stores
properties and optional efficiency points.
JSON (POST /inverters/json)
Body model: InverterCreateRequest
| Field | Type | Required | Notes |
|---|
name | string | yes | Display name |
properties | object | yes | Parsed or manually authored inverter properties |
efficiency | object | no | Efficiency curve data |
Shading Scene
Canonical JSON Create (POST /shadingscenes)
Body model: ShadingSceneCreateRequest
| Field | Type | Required | Notes |
|---|
name | string | yes | Scene display name |
sceneSource | string | yes | Source label such as api-json, pvc, pvcomplete, or helioscope |
sceneJson.tableList | array | yes | At least one table |
sceneJson.obstructions | array | no | Defaults to [] |
sceneJson.modelInputs | object | no | Defaults diodesReadIn=true, diffuseTableIndex=0 |
sceneJson.properties | object | no | Defaults to meter-based import metadata |
sceneJson.shadingSceneSummary | object | no | Auto-derived when omitted |
trackingParameters | object | no | Required fields become mandatory when object is present |
Validation notes:
- Each table must provide either
outline or all of xpoints/ypoints/zpoints.
- Table geometry is rectangular: exactly 4 corner points.
torqueTubePoint_1, torqueTubePoint_2, and torqueTubeVector are optional and auto-derived when omitted.
transverseDiodes and stringsPerLength must be positive integers and default to 10 and 1.
- Obstruction outlines need at least 3 points.
- Top-level extra fields are rejected; nested
sceneJson objects allow pass-through metadata.
File Import (POST /shadingscenes/import)
Content type: multipart form-data
| Field | Type | Required | Notes |
|---|
file | upload | yes | Scene file (pvc/shd workflow) |
name | string | yes | Scene name |
file_type | string | no | Defaults to pvc |
read_diodes | boolean | no | Defaults to true |
gcr, azimuth, axis_tilt, back_tracking, max_angle | mixed | no | Optional tracking config |
terrain_aware, terrain_aware_diode_threshold, terrain_aware_method | mixed | no | Optional terrain-aware controls |
Tracking Inputs (POST /shadingscenes/{scene_id}/trackinginputs)
- Required form field:
gcr
- Optional fields:
azimuth, axis_tilt, back_tracking, max_angle, terrain_aware, terrain_aware_diode_threshold, terrain_aware_method
Reuse Pattern
- Create modeling objects once per workspace.
- Store returned IDs.
- Reference those IDs in
EnergyModelInput block/root payloads.