Download OpenAPI specification:
Return asset status entries for one or more assets.
With latest=true, returns the most recent status per asset.
With from/to, returns a paginated history of status changes.
At least one of latest or from/to is required.
params : StatusGetQueryParams Validated query parameters including asset_ids, latest, from/to, limit, offset, and optional status filter. service : StatusService Injected via FastAPI dependency.
StatusListResponse Paginated status entries for the requested assets.
| limit | integer (Limit) [ 1 .. 1000 ] Default: 50 |
| offset | integer (Offset) >= 0 Default: 0 |
| asset_ids required | Array of strings (Asset Ids) non-empty |
| latest | boolean (Latest) Default: false |
From (string) or From (null) (From) | |
To (string) or To (null) (To) | |
Array of Status (strings) or Status (null) (Status) |
{- "limit": 0,
- "offset": 0,
- "statuses": [
- {
- "asset_id": "string",
- "status": "UNKNOWN",
- "effective_at": "2019-08-24T14:15:22Z",
- "reasons": [
- {
- "category": "UNKNOWN",
- "detail": "string",
- "source": "string",
- "attributes": { }
}
], - "created_at": "2019-08-24T14:15:22Z"
}
]
}Create a new asset master record.
body : CreateAssetRequest Asset creation payload. service : AssetService Injected via FastAPI dependency.
AssetResponse The created asset master record with a system-generated asset_id.
| code required | string (Code) |
| name required | string (Name) |
| type required | string (AssetType) Enum: "BESS" "VBAT" "PV" "DAA_SWAP" "DAA_SWAP_VBAT" "GREY_COLOCATION" "GREEN_COLOCATION" Supported asset types. |
| region required | string (Region) Enum: "DE" "PL" Enum of available regions. |
| delivery_area required | string (DeliveryArea) Enum: "50HZ" "AMPN" "TNBW" "TNNT" "PSE" Enum of available delivery areas. |
| provider required | string (Provider) Enum: "ENERGIEKOPPLER" "ENTELIOS" "EBX" "TERRALAYR" "TRANSITION_TECHNOLOGIES" "ASSET_SIMULATOR" "NFT" Energy market providers. |
{- "code": "string",
- "name": "string",
- "type": "BESS",
- "region": "DE",
- "delivery_area": "50HZ",
- "provider": "ENERGIEKOPPLER"
}{- "id": "string",
- "code": "string",
- "name": "string",
- "type": "BESS",
- "region": "DE",
- "delivery_area": "50HZ",
- "lifecycle": "DRAFT",
- "provider": "ENERGIEKOPPLER",
- "go_live_date": "2019-08-24",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}Return all asset master records with optional filters.
params : AssetListQueryParams
Optional query parameters: type, region, lifecycle.
service : AssetService
Injected via FastAPI dependency.
AssetListResponse Matching asset master records.
| limit | integer (Limit) [ 1 .. 1000 ] Default: 50 |
| offset | integer (Offset) >= 0 Default: 0 |
AssetType (string) or Type (null) (Type) | |
Region (string) or Region (null) (Region) | |
AssetLifecycle (string) or Lifecycle (null) (Lifecycle) | |
DeliveryArea (string) or Delivery Area (null) (Delivery Area) | |
Provider (string) or Provider (null) (Provider) |
{- "limit": 0,
- "offset": 0,
- "assets": [
- {
- "id": "string",
- "code": "string",
- "name": "string",
- "type": "BESS",
- "region": "DE",
- "delivery_area": "50HZ",
- "lifecycle": "DRAFT",
- "provider": "ENERGIEKOPPLER",
- "go_live_date": "2019-08-24",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}
]
}Return a single asset master record by asset_id.
asset_id : str
System-generated unique asset identifier (e.g. DE_50HZ_WU_1).
service : AssetService
Injected via FastAPI dependency.
AssetResponse The matching asset master record.
| asset_id required | string (Asset Id) |
{- "id": "string",
- "code": "string",
- "name": "string",
- "type": "BESS",
- "region": "DE",
- "delivery_area": "50HZ",
- "lifecycle": "DRAFT",
- "provider": "ENERGIEKOPPLER",
- "go_live_date": "2019-08-24",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}Apply a partial update to an asset master record.
Only provided fields are applied. Lifecycle transitions must use the dedicated asset-actions endpoints.
asset_id : str System-generated unique asset identifier. body : PatchAssetRequest Fields to update; omitted fields are left untouched. service : AssetService Injected via FastAPI dependency.
| asset_id required | string (Asset Id) |
Name (string) or Name (null) (Name) | |
AssetType (string) or null | |
Go Live Date (string) or Go Live Date (null) (Go Live Date) | |
Provider (string) or null |
{- "name": "string",
- "type": "BESS",
- "go_live_date": "2019-08-24",
- "provider": "ENERGIEKOPPLER"
}{- "detail": [
- {
- "loc": [
- "string"
], - "msg": "string",
- "type": "string",
- "input": null,
- "ctx": { }
}
]
}Delete an asset master record.
Deletion is only permitted for assets in the draft or
decommissioned lifecycle state.
asset_id : str System-generated unique asset identifier. service : AssetService Injected via FastAPI dependency.
| asset_id required | string (Asset Id) |
{- "detail": [
- {
- "loc": [
- "string"
], - "msg": "string",
- "type": "string",
- "input": null,
- "ctx": { }
}
]
}Return the latest operational status of an asset.
asset_id : str
Unique identifier of the asset (e.g. DE_50HZ_DK_1).
service : StatusService
Injected via FastAPI dependency.
AssetStatusEntry Latest status entry for the asset.
| asset_id required | string (Asset Id) |
{- "asset_id": "string",
- "status": "UNKNOWN",
- "effective_at": "2019-08-24T14:15:22Z",
- "reasons": [
- {
- "category": "UNKNOWN",
- "detail": "string",
- "source": "string",
- "attributes": { }
}
], - "created_at": "2019-08-24T14:15:22Z"
}Lifecycle transitions (commission, decommission, etc.). Each endpoint covers exactly one transition between adjacent lifecycle states.
Transition the asset from DRAFT to COMMISSIONING.
asset_id : str System-generated unique asset identifier. service : AssetService Injected via FastAPI dependency.
| asset_id required | string (Asset Id) |
{- "detail": [
- {
- "loc": [
- "string"
], - "msg": "string",
- "type": "string",
- "input": null,
- "ctx": { }
}
]
}Transition the asset from COMMISSIONING to LIVE.
Sets go_live_date to today (UTC) if it is not already set.
asset_id : str System-generated unique asset identifier. service : AssetService Injected via FastAPI dependency.
| asset_id required | string (Asset Id) |
{- "detail": [
- {
- "loc": [
- "string"
], - "msg": "string",
- "type": "string",
- "input": null,
- "ctx": { }
}
]
}Transition the asset from LIVE to SUSPENDED.
asset_id : str System-generated unique asset identifier. service : AssetService Injected via FastAPI dependency.
| asset_id required | string (Asset Id) |
{- "detail": [
- {
- "loc": [
- "string"
], - "msg": "string",
- "type": "string",
- "input": null,
- "ctx": { }
}
]
}Transition the asset from SUSPENDED back to LIVE.
asset_id : str System-generated unique asset identifier. service : AssetService Injected via FastAPI dependency.
| asset_id required | string (Asset Id) |
{- "detail": [
- {
- "loc": [
- "string"
], - "msg": "string",
- "type": "string",
- "input": null,
- "ctx": { }
}
]
}Transition the asset from LIVE to DECOMMISSIONED.
asset_id : str System-generated unique asset identifier. service : AssetService Injected via FastAPI dependency.
| asset_id required | string (Asset Id) |
{- "detail": [
- {
- "loc": [
- "string"
], - "msg": "string",
- "type": "string",
- "input": null,
- "ctx": { }
}
]
}Historical dispatch commands. Read-only — writes happen via the event-driven ingestion worker, not over HTTP.
Return a paginated history of dispatch commands.
Used by Operators and the Optimisation service for audit trails, monitoring, and debugging anomalies (e.g. slow-ramp investigation).
params : DispatchListQueryParams
Required filter asset_ids plus optional from, to,
delivery_day, limit, and offset.
service : DispatchService
Injected via FastAPI dependency.
DispatchListResponse Matching dispatch records with pagination metadata.
| limit | integer (Limit) [ 1 .. 1000 ] Default: 50 |
| offset | integer (Offset) >= 0 Default: 0 |
| asset_ids required | Array of strings (Asset Ids) non-empty |
| from required | string <date-time> (From) |
| to required | string <date-time> (To) |
{- "dispatches": [
- {
- "source": "string",
- "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7",
- "published_at": "2019-08-24T14:15:22Z",
- "asset_id": "string",
- "dispatch_time": "2019-08-24T14:15:22Z",
- "delivery_period_start": "2019-08-24T14:15:22Z",
- "target_power": {
- "amount": "string",
- "unit": "MW"
}, - "nominal_power": {
- "amount": "string",
- "unit": "MW"
}, - "power_imbalance": {
- "amount": "string",
- "unit": "MW"
}, - "soc_imbalance": {
- "amount": "string",
- "unit": "MW"
}
}
], - "limit": 0,
- "offset": 0
}Batch upsert state snapshots.
Inserts or overwrites state snapshots for one or more assets. The entire batch succeeds or none of it is written (single atomic statement).
On conflict on (asset_id, effective_at), the energy fields and
updated_at are overwritten. created_at is never modified.
Returns 422 if any asset_id in the batch does not exist, identifying
all offending IDs.
required | Array of objects (State Snapshots) non-empty |
{- "state_snapshots": [
- {
- "asset_id": "string",
- "effective_at": "2019-08-24T14:15:22Z",
- "stored_energy": {
- "amount": 0,
- "unit": "MW"
}, - "reading_quality": "VALID"
}
]
}{- "state_snapshots": [
- {
- "asset_id": "string",
- "effective_at": "2019-08-24T14:15:22Z",
- "stored_energy": {
- "amount": "string",
- "unit": "MW"
}, - "reading_quality": "VALID",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}
]
}Retrieve state snapshots for one or more assets.
Latest mode (latest=true): returns the single most recent snapshot
per asset. Cannot be combined with from or to.
Time-range mode (default): returns all snapshots with
effective_at in [from, to), ordered effective_at ASC,
paginated via limit/offset. to defaults to now() when
omitted. Unknown asset_ids return an empty list silently.
| asset_ids required | Array of strings (Asset Ids) non-empty |
| latest | boolean (Latest) Default: false |
From (string) or From (null) (From) | |
To (string) or To (null) (To) | |
| limit | integer (Limit) [ 1 .. 1000 ] Default: 50 |
| offset | integer (Offset) >= 0 Default: 0 |
{- "state_snapshots": [
- {
- "asset_id": "string",
- "effective_at": "2019-08-24T14:15:22Z",
- "stored_energy": {
- "amount": "string",
- "unit": "MW"
}, - "reading_quality": "VALID",
- "charged_energy": {
- "amount": "string",
- "unit": "MW"
}, - "discharged_energy": {
- "amount": "string",
- "unit": "MW"
}, - "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}
], - "limit": 0,
- "offset": 0,
- "total_charged_energy": {
- "amount": "string",
- "unit": "MW"
}, - "total_discharged_energy": {
- "amount": "string",
- "unit": "MW"
}
}Period limits per asset per 15-min slot — charge/discharge power, energy bands, trading lock. Multi-source with computed most-restrictive values.
Batch partial-update period limits for one or more assets.
Each entry specifies a UTC time-of-day window (start_time-
end_time) and a date range (valid_from-valid_until). The
server expands each entry into individual 15-minute delivery period rows
for every day in [valid_from, valid_until]. delivery_day is
derived server-side from each row's start_time — do not pass it in
the request.
On conflict on (asset_id, start_time, source) the upsert is
partial — every nullable field (power_charge,
power_discharge, energy_low, energy_high,
trading_locked) is overwritten only when the incoming value is
non-null; null preserves the existing column. To clear
trading_locked send an explicit false; to clear a constraint
column issue DELETE on the (asset, period range, source).
end_time, delivery_day and updated_at always overwrite;
created_at is never modified.
Returns 404 if any referenced asset_id does not exist.
required | Array of objects (Limits) non-empty |
{- "limits": [
- {
- "asset_id": "string",
- "start_time": "2019-08-24T14:15:22Z",
- "end_time": "2019-08-24T14:15:22Z",
- "recurrent": false,
- "source": "REPORTED",
- "power_charge": {
- "amount": 0,
- "unit": "MW"
}, - "power_discharge": {
- "amount": 0,
- "unit": "MW"
}, - "energy_low": {
- "amount": 0,
- "unit": "MW"
}, - "energy_high": {
- "amount": 0,
- "unit": "MW"
}, - "trading_locked": true
}
]
}{- "detail": [
- {
- "loc": [
- "string"
], - "msg": "string",
- "type": "string",
- "input": null,
- "ctx": { }
}
]
}Return paginated period limits for one or more assets.
Retrieves all period limit rows within [from, to) for the given
assets. Results are grouped by (asset_id, start_time) and include
both per-source raw values and derived computed limits.
Computed limits represent the most-restrictive value across all sources:
power_charge (max), power_discharge (min), energy_low (max),
energy_high (min), trading_locked (any).
Optionally filter by sources (comma-separated or repeated).
| limit | integer (Limit) [ 1 .. 1000 ] Default: 50 |
| offset | integer (Offset) >= 0 Default: 0 |
| asset_ids required | Array of strings (Asset Ids) non-empty |
| from required | string <date-time> (From) |
| to required | string <date-time> (To) |
Array of Sources (strings) or Sources (null) (Sources) |
{- "limit": 0,
- "offset": 0,
- "limits": [
- {
- "asset_id": "string",
- "start_time": "2019-08-24T14:15:22Z",
- "end_time": "2019-08-24T14:15:22Z",
- "delivery_day": "2019-08-24",
- "computed_limits": {
- "power_charge": {
- "amount": "string",
- "unit": "MW"
}, - "power_discharge": {
- "amount": "string",
- "unit": "MW"
}, - "energy_low": {
- "amount": "string",
- "unit": "MW"
}, - "energy_high": {
- "amount": "string",
- "unit": "MW"
}, - "trading_locked": true
}, - "sources": [
- {
- "source": "REPORTED",
- "power_charge": {
- "amount": "string",
- "unit": "MW"
}, - "power_discharge": {
- "amount": "string",
- "unit": "MW"
}, - "energy_low": {
- "amount": "string",
- "unit": "MW"
}, - "energy_high": {
- "amount": "string",
- "unit": "MW"
}, - "trading_locked": true,
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}
]
}
]
}Clear constraint contributions for a source within a time range.
For each row matching start_time in [start_time, end_time)
for the given asset_id and source:
power_charge, power_discharge, energy_low and
energy_high are set to NULL.trading_locked is preserved — DELETE does not clear a
lock. To clear trading_locked send a PATCH with an explicit
trading_locked=false.NULL and trading_locked not TRUE) are
removed from the table.This lets customer-side limits and customer-side reservation locks
share a source=CUSTOMER row without a DELETE on one wiping the
other.
| asset_id required | string (Asset Id) |
| start_time required | string <date-time> (Start Time) |
| end_time required | string <date-time> (End Time) |
| source required | string (LimitSource) Enum: "REPORTED" "OPERATIONS" "CUSTOMER" "PV" "AVAILABILITY" Controlled vocabulary for limit submission sources. |
{- "detail": [
- {
- "loc": [
- "string"
], - "msg": "string",
- "type": "string",
- "input": null,
- "ctx": { }
}
]
}Batch upsert forecast periods for one or more assets.
Each entry specifies a UTC [start_time, end_time) window and the
forecasted generation and consumption for that period. The
natural key is (asset_id, start_time) — re-submitting the same key
overwrites the row's forecast values and updated_at; created_at
is never modified. delivery_day is derived server-side and must
not be supplied by the client.
Returns 404 if any referenced asset_id does not exist.
required | Array of objects (Forecasts) non-empty |
{- "forecasts": [
- {
- "asset_id": "string",
- "start_time": "2019-08-24T14:15:22Z",
- "end_time": "2019-08-24T14:15:22Z",
- "generation": {
- "amount": 0,
- "unit": "MW"
}, - "consumption": {
- "amount": 0,
- "unit": "MW"
}, - "import_from_grid_fee": 0
}
]
}{- "detail": [
- {
- "loc": [
- "string"
], - "msg": "string",
- "type": "string",
- "input": null,
- "ctx": { }
}
]
}Return paginated forecast periods for one or more assets.
Retrieves forecast rows with start_time in [from, to) for the
given assets, ordered by (asset_id, start_time).
| limit | integer (Limit) [ 1 .. 1000 ] Default: 50 |
| offset | integer (Offset) >= 0 Default: 0 |
| asset_ids required | Array of strings (Asset Ids) non-empty |
| from required | string <date-time> (From) |
| to required | string <date-time> (To) |
{- "limit": 0,
- "offset": 0,
- "forecasts": [
- {
- "asset_id": "string",
- "start_time": "2019-08-24T14:15:22Z",
- "end_time": "2019-08-24T14:15:22Z",
- "delivery_day": "2019-08-24",
- "generation": {
- "amount": "string",
- "unit": "MW"
}, - "consumption": {
- "amount": "string",
- "unit": "MW"
}, - "import_from_grid_fee": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}
]
}Net market positions per (asset, period, market, source) — from optimisation, external sources, or DAA swaps.
Batch upsert reservation periods for one or more assets.
Each entry specifies a UTC [start_time, end_time) window, a
market string, a source, and the four numeric fields
(power in MW; energy_change, energy_buffer_low,
energy_buffer_high in MWh). The natural key is
(asset_id, start_time, market, source) — re-submitting the same
key overwrites every value column and refreshes updated_at;
created_at is never modified. delivery_day is derived
server-side from start_time and must not be supplied by the
client.
Mirrors the forecast endpoint's plain-upsert shape: rows not in
the payload are left untouched (no implicit delete of omitted
markets for a given (period, source)).
Returns 404 if any referenced asset_id does not exist.
required | Array of objects (Reservations) [ 1 .. 1000 ] items |
{- "reservations": [
- {
- "asset_id": "string",
- "start_time": "2019-08-24T14:15:22Z",
- "end_time": "2019-08-24T14:15:22Z",
- "market": "string",
- "source": "OPTIMISATION",
- "power": {
- "amount": 0,
- "unit": "MW"
}, - "energy_change": {
- "amount": 0,
- "unit": "MW"
}, - "energy_buffer_low": {
- "amount": 0,
- "unit": "MW"
}, - "energy_buffer_high": {
- "amount": 0,
- "unit": "MW"
}
}
]
}{- "detail": [
- {
- "loc": [
- "string"
], - "msg": "string",
- "type": "string",
- "input": null,
- "ctx": { }
}
]
}Return paginated reservation periods for one or more assets.
Retrieves reservation rows with start_time in [from, to) for
the given assets, ordered by (asset_id, start_time, market, source). Optionally filter by markets and/or sources
(comma-separated or repeated query parameters).
| limit | integer (Limit) [ 1 .. 1000 ] Default: 50 |
| offset | integer (Offset) >= 0 Default: 0 |
| asset_ids required | Array of strings (Asset Ids) non-empty |
| from required | string <date-time> (From) |
| to required | string <date-time> (To) |
Array of Markets (strings) or Markets (null) (Markets) | |
Array of Sources (strings) or Sources (null) (Sources) |
{- "limit": 0,
- "offset": 0,
- "reservations": [
- {
- "asset_id": "string",
- "start_time": "2019-08-24T14:15:22Z",
- "end_time": "2019-08-24T14:15:22Z",
- "delivery_day": "2019-08-24",
- "market": "string",
- "source": "OPTIMISATION",
- "power": {
- "amount": "string",
- "unit": "MW"
}, - "energy_change": {
- "amount": "string",
- "unit": "MW"
}, - "energy_buffer_low": {
- "amount": "string",
- "unit": "MW"
}, - "energy_buffer_high": {
- "amount": "string",
- "unit": "MW"
}, - "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}
]
}Upsert a versioned technical spec for one asset.
The natural key is (asset_id, valid_from). Re-submitting the
same key applies a partial update — fields omitted from the
request preserve the existing column value. Otherwise a new row
is inserted. For BESS specs (valid_to omitted/null) the
currently-active row, if any, is closed by setting its
valid_to to the new valid_from; the new valid_from
must be strictly after the existing active spec.
For vBat specs (explicit valid_to) the database EXCLUDE
constraint rejects any window that partially overlaps an existing
spec; full overlap on the same valid_from is handled as the
partial-update case above.
Returns 404 if the referenced asset_id does not exist, 422 if
the BESS ordering rule or the vBat overlap rule is violated.
| asset_id required | string (Asset Id) |
| valid_from required | string <date-time> (Valid From) |
Valid To (string) or Valid To (null) (Valid To) | |
Quantity (object) or null | |
Quantity (object) or null | |
Quantity (object) or null | |
Ramp Rate (number) or Ramp Rate (string) or Ramp Rate (null) (Ramp Rate) | |
Ramp Type (string) or Ramp Type (null) (Ramp Type) | |
Charge Efficiency (number) or Charge Efficiency (string) or Charge Efficiency (null) (Charge Efficiency) | |
Discharge Efficiency (number) or Discharge Efficiency (string) or Discharge Efficiency (null) (Discharge Efficiency) | |
Quantity (object) or null | |
Quantity (object) or null | |
Quantity (object) or null | |
Quantity (object) or null |
{- "asset_id": "string",
- "valid_from": "2019-08-24T14:15:22Z",
- "valid_to": "2019-08-24T14:15:22Z",
- "rated_power": {
- "amount": 0,
- "unit": "MW"
}, - "grid_connection_max_power": {
- "amount": 0,
- "unit": "MW"
}, - "max_capacity": {
- "amount": 0,
- "unit": "MW"
}, - "ramp_rate": 0,
- "ramp_type": "string",
- "charge_efficiency": 0,
- "discharge_efficiency": 0,
- "daily_cycle_energy_limit": {
- "amount": 0,
- "unit": "MW"
}, - "prequalified_fcr": {
- "amount": 0,
- "unit": "MW"
}, - "prequalified_afrr_charge": {
- "amount": 0,
- "unit": "MW"
}, - "prequalified_afrr_discharge": {
- "amount": 0,
- "unit": "MW"
}
}{- "detail": [
- {
- "loc": [
- "string"
], - "msg": "string",
- "type": "string",
- "input": null,
- "ctx": { }
}
]
}Return paginated spec versions for one or more assets.
Rows are ordered by (asset_id, valid_from DESC). latest=true
collapses to one row per asset. from and to bound
valid_from inclusive on both ends; the combined span is
capped at 31 days to bound query cost.
| limit | integer (Limit) [ 1 .. 1000 ] Default: 50 |
| offset | integer (Offset) >= 0 Default: 0 |
| asset_ids required | Array of strings (Asset Ids) non-empty |
| latest | boolean (Latest) Default: false |
From (string) or From (null) (From) | |
To (string) or To (null) (To) |
{- "limit": 0,
- "offset": 0,
- "specs": [
- {
- "asset_id": "string",
- "valid_from": "2019-08-24T14:15:22Z",
- "valid_to": "2019-08-24T14:15:22Z",
- "rated_power": {
- "amount": "string",
- "unit": "MW"
}, - "grid_connection_max_power": {
- "amount": "string",
- "unit": "MW"
}, - "max_capacity": {
- "amount": "string",
- "unit": "MW"
}, - "ramp_rate": "string",
- "ramp_type": "string",
- "charge_efficiency": "string",
- "discharge_efficiency": "string",
- "daily_cycle_energy_limit": {
- "amount": "string",
- "unit": "MW"
}, - "prequalified_fcr": {
- "amount": "string",
- "unit": "MW"
}, - "prequalified_afrr_charge": {
- "amount": "string",
- "unit": "MW"
}, - "prequalified_afrr_discharge": {
- "amount": "string",
- "unit": "MW"
}, - "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}
]
}Create a new site record.
body : CreateSiteRequest Site creation payload. service : SiteService Injected via FastAPI dependency.
SiteResponse The created site record with a system-generated id.
| name required | string (Name) |
| code required | string (Code) |
| region required | string (Region) Enum: "DE" "PL" Enum of available regions. |
| delivery_area required | string (DeliveryArea) Enum: "50HZ" "AMPN" "TNBW" "TNNT" "PSE" Enum of available delivery areas. |
required | object (DispatchMode-Input) Dispatch mode configuration for a site. |
{- "name": "string",
- "code": "string",
- "region": "DE",
- "delivery_area": "50HZ",
- "dispatch_mode": {
- "name": "PRICE_BASED",
- "floor_price": {
- "amount": 0,
- "unit": "MW"
}, - "strike_price": {
- "amount": 0,
- "unit": "MW"
}
}
}{- "id": "string",
- "name": "string",
- "code": "string",
- "region": "DE",
- "delivery_area": "50HZ",
- "dispatch_mode": {
- "name": "PRICE_BASED",
- "floor_price": {
- "amount": "string",
- "unit": "MW"
}, - "strike_price": {
- "amount": "string",
- "unit": "MW"
}
}, - "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "inverters": [
- {
- "id": "string",
- "site_id": "string",
- "rated_power": {
- "amount": "string",
- "unit": "MW"
}, - "charge_efficiency": "string",
- "discharge_efficiency": "string",
- "asset_ids": [
- "string"
]
}
]
}Return all site records with optional filters.
params : SiteListQueryParams
Optional query parameters: region, delivery_area.
service : SiteService
Injected via FastAPI dependency.
SiteListResponse Matching site records.
| limit | integer (Limit) [ 1 .. 1000 ] Default: 50 |
| offset | integer (Offset) >= 0 Default: 0 |
Region (string) or Region (null) (Region) | |
DeliveryArea (string) or Delivery Area (null) (Delivery Area) | |
Asset Id (string) or Asset Id (null) (Asset Id) | |
Expand (string) or Expand (null) (Expand) |
{- "limit": 0,
- "offset": 0,
- "sites": [
- {
- "id": "string",
- "name": "string",
- "code": "string",
- "region": "DE",
- "delivery_area": "50HZ",
- "dispatch_mode": {
- "name": "PRICE_BASED",
- "floor_price": {
- "amount": "string",
- "unit": "MW"
}, - "strike_price": {
- "amount": "string",
- "unit": "MW"
}
}, - "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "inverters": [
- {
- "id": "string",
- "site_id": "string",
- "rated_power": {
- "amount": "string",
- "unit": "MW"
}, - "charge_efficiency": "string",
- "discharge_efficiency": "string",
- "asset_ids": [
- "string"
]
}
]
}
]
}Return a single site record by site_id.
site_id : str
System-generated unique site identifier (e.g. DE_AMPN_IMMST_SITE_1).
service : SiteService
Injected via FastAPI dependency.
SiteResponse The matching site record.
| site_id required | string (Site Id) |
{- "id": "string",
- "name": "string",
- "code": "string",
- "region": "DE",
- "delivery_area": "50HZ",
- "dispatch_mode": {
- "name": "PRICE_BASED",
- "floor_price": {
- "amount": "string",
- "unit": "MW"
}, - "strike_price": {
- "amount": "string",
- "unit": "MW"
}
}, - "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "inverters": [
- {
- "id": "string",
- "site_id": "string",
- "rated_power": {
- "amount": "string",
- "unit": "MW"
}, - "charge_efficiency": "string",
- "discharge_efficiency": "string",
- "asset_ids": [
- "string"
]
}
]
}Apply a partial update to a site record.
Only provided fields are applied. Fields that form the site id (code, region, delivery_area) are immutable.
site_id : str System-generated unique site identifier. body : PatchSiteRequest Fields to update; omitted fields are left untouched. service : SiteService Injected via FastAPI dependency.
| site_id required | string (Site Id) |
Name (string) or Name (null) (Name) | |
DispatchModeName (string) or null | |
Quantity (object) or null | |
Quantity (object) or null |
{- "name": "string",
- "dispatch_mode_name": "PRICE_BASED",
- "dispatch_mode_floor_price": {
- "amount": 0,
- "unit": "MW"
}, - "dispatch_mode_strike_price": {
- "amount": 0,
- "unit": "MW"
}
}{- "detail": [
- {
- "loc": [
- "string"
], - "msg": "string",
- "type": "string",
- "input": null,
- "ctx": { }
}
]
}Delete a site record.
site_id : str System-generated unique site identifier. service : SiteService Injected via FastAPI dependency.
| site_id required | string (Site Id) |
{- "detail": [
- {
- "loc": [
- "string"
], - "msg": "string",
- "type": "string",
- "input": null,
- "ctx": { }
}
]
}Return paginated PoC limits for a site within a time window.
site_id : str
System-generated unique site identifier.
params : SiteLimitsQueryParams
Required query parameters: from, to (max 31-day window).
Optional: limit, offset.
service : SiteService
Injected via FastAPI dependency.
SiteLimitsResponse Paginated limit periods for the site.
| site_id required | string (Site Id) |
| limit | integer (Limit) [ 1 .. 1000 ] Default: 50 |
| offset | integer (Offset) >= 0 Default: 0 |
| from required | string <date-time> (From) |
| to required | string <date-time> (To) |
{- "limit": 0,
- "offset": 0,
- "limits": [
- {
- "start_time": "2019-08-24T14:15:22Z",
- "end_time": "2019-08-24T14:15:22Z",
- "max_import_from_grid": {
- "amount": "string",
- "unit": "MW"
}, - "max_export_to_grid": {
- "amount": "string",
- "unit": "MW"
}
}
]
}Upsert PoC limits for a site.
Existing periods with a matching start_time are overwritten.
Periods outside the submitted set are left untouched.
site_id : str System-generated unique site identifier. body : PutSiteLimitsRequest List of limit periods to upsert. service : SiteService Injected via FastAPI dependency.
| site_id required | string (Site Id) |
required | Array of objects (Limits) non-empty |
{- "limits": [
- {
- "start_time": "2019-08-24T14:15:22Z",
- "end_time": "2019-08-24T14:15:22Z",
- "max_import_from_grid": {
- "amount": 0,
- "unit": "MW"
}, - "max_export_to_grid": {
- "amount": 0,
- "unit": "MW"
}
}
]
}{- "detail": [
- {
- "loc": [
- "string"
], - "msg": "string",
- "type": "string",
- "input": null,
- "ctx": { }
}
]
}Add a new inverter to a site.
site_id : str System-generated unique site identifier. body : CreateSiteInverterRequest Inverter creation payload. service : SiteService Injected via FastAPI dependency.
SiteInverterResponse The created inverter record with a system-generated id.
| site_id required | string (Site Id) |
required | object (Quantity-Input) A physical amount paired with its unit. |
required | Charge Efficiency (number) or Charge Efficiency (string) (Charge Efficiency) |
required | Discharge Efficiency (number) or Discharge Efficiency (string) (Discharge Efficiency) |
| asset_ids required | Array of strings (Asset Ids) non-empty |
{- "rated_power": {
- "amount": 0,
- "unit": "MW"
}, - "charge_efficiency": 0,
- "discharge_efficiency": 0,
- "asset_ids": [
- "string"
]
}{- "id": "string",
- "site_id": "string",
- "rated_power": {
- "amount": "string",
- "unit": "MW"
}, - "charge_efficiency": "string",
- "discharge_efficiency": "string",
- "asset_ids": [
- "string"
]
}Apply a partial update to a site inverter.
site_id : str System-generated unique site identifier. inverter_id : str System-generated unique inverter identifier. body : PatchSiteInverterRequest Fields to update; omitted fields are left untouched. service : SiteService Injected via FastAPI dependency.
| site_id required | string (Site Id) |
| inverter_id required | string (Inverter Id) |
Quantity (object) or null | |
Charge Efficiency (number) or Charge Efficiency (string) or Charge Efficiency (null) (Charge Efficiency) | |
Discharge Efficiency (number) or Discharge Efficiency (string) or Discharge Efficiency (null) (Discharge Efficiency) | |
Array of Asset Ids (strings) or Asset Ids (null) (Asset Ids) |
{- "rated_power": {
- "amount": 0,
- "unit": "MW"
}, - "charge_efficiency": 0,
- "discharge_efficiency": 0,
- "asset_ids": [
- "string"
]
}{- "detail": [
- {
- "loc": [
- "string"
], - "msg": "string",
- "type": "string",
- "input": null,
- "ctx": { }
}
]
}Delete a site inverter.
site_id : str System-generated unique site identifier. inverter_id : str System-generated unique inverter identifier. service : SiteService Injected via FastAPI dependency.
| site_id required | string (Site Id) |
| inverter_id required | string (Inverter Id) |
{- "detail": [
- {
- "loc": [
- "string"
], - "msg": "string",
- "type": "string",
- "input": null,
- "ctx": { }
}
]
}Return paginated limits for a site inverter within a time window.
site_id : str
System-generated unique site identifier.
inverter_id : str
System-generated unique inverter identifier.
params : SiteInverterLimitsQueryParams
Required query parameters: from, to (max 7-day window).
Optional: limit, offset.
service : SiteService
Injected via FastAPI dependency.
SiteInverterLimitsResponse Paginated limit periods for the inverter.
| site_id required | string (Site Id) |
| inverter_id required | string (Inverter Id) |
| limit | integer (Limit) [ 1 .. 1000 ] Default: 50 |
| offset | integer (Offset) >= 0 Default: 0 |
| from required | string <date-time> (From) |
| to required | string <date-time> (To) |
{- "limit": 0,
- "offset": 0,
- "limits": [
- {
- "start_time": "2019-08-24T14:15:22Z",
- "end_time": "2019-08-24T14:15:22Z",
- "max_import_from_grid": {
- "amount": "string",
- "unit": "MW"
}, - "max_export_to_grid": {
- "amount": "string",
- "unit": "MW"
}
}
]
}Upsert limits for a site inverter.
Existing periods with a matching start_time are overwritten.
Periods outside the submitted set are left untouched.
site_id : str System-generated unique site identifier. inverter_id : str System-generated unique inverter identifier. body : PutSiteInverterLimitsRequest List of limit periods to upsert. service : SiteService Injected via FastAPI dependency.
| site_id required | string (Site Id) |
| inverter_id required | string (Inverter Id) |
required | Array of objects (Limits) non-empty |
{- "limits": [
- {
- "start_time": "2019-08-24T14:15:22Z",
- "end_time": "2019-08-24T14:15:22Z",
- "max_import_from_grid": {
- "amount": 0,
- "unit": "MW"
}, - "max_export_to_grid": {
- "amount": 0,
- "unit": "MW"
}
}
]
}{- "detail": [
- {
- "loc": [
- "string"
], - "msg": "string",
- "type": "string",
- "input": null,
- "ctx": { }
}
]
}