openapi: 3.2.0 info: title: Gridx Ai System API version: 2.0.0 contact: name: gridX url: https://www.gridx.ai/module/api email: developer-community@gridx.de license: name: All rights reserved. url: https://www.gridx.ai/ x-api-id: ba9d6a25-ae1a-4ac8-af7a-70b76db17021 x-audience: public-external description: 'Operations tagged System across 2 of this provider''s published API definitions: gridx-api.json, gridx-ai-openapi.yml. Each path carries the servers of the definition it was published in.' servers: - url: https://api.gridx.de description: Production tags: - name: System x-displayName: System paths: /systems/{systemID}/live: get: operationId: getSystemLiveMeasurements summary: Retrieve System's Live Measurement description: Retrieves a system's latest aggregated measurement. tags: - System security: - HeaderAuth: - SystemMeasurementsRead parameters: - name: systemID description: 'Unique identifier used to access a system. ' in: path required: true schema: type: string format: uuid example: aa3e5a93-bb38-4b15-b7f2-af40daf3a1dc responses: '200': description: Successfully returned system's live measurements. content: application/vnd.gridx.v2+json: schema: title: Measurement type: object properties: measuredAt: type: string format: date-time example: '2018-04-01T00:10:00Z' description: "Date and time at which the data point was observed.\nFor power values the data point is written after the aggregated \ntime span. For energy values the observation is stored at the \nbeginning of the aggregated time span.\n" grid: type: number format: double description: 'Grid is the measured power/energy at the grid connection point. For power values, Positive values indicate supply, Negative values indicate feed in. ' gridL1: type: number format: double description: "GridL1 is the power/energy measured at the grid connection point's \nfirst phase.\n" gridL2: type: number format: double description: "GridL2 is the power/energy measured at the grid connection point's \nsecond phase.\n" gridL3: type: number format: double description: "GridL3 is the power/energy measured at the grid connection point's \nthird phase.\n" gridSupplyLimit: type: number format: double description: 'GridSupplyLimit is the restriction of supplied power at the grid connection point. ' photovoltaic: type: number format: double description: 'Photovoltaic is the measured power/energy in front of the photovoltaic systems. ' photovoltaicExternal: type: number format: double description: 'PhotovoltaicExternal is the measured power/energy in front of the external photovoltaic systems. ' blockTypeThermalPowerStation: type: number format: double description: 'BTTPPower is the measured power for the block-type thermal power station. ' fuelCell: type: number format: double description: 'FuelCell is the measured power/energy in front of the fuel cells. ' production: type: number format: double description: Sum of all energy producing appliances (e.g. PV). battery: title: Battery Measurement description: 'MeasurementBattery represents the aggregated power or energy the gateway measured from a battery. ' type: object properties: applianceID: type: string description: 'ApplianceID is the battery''s appliance ID. It is empty for aggregated batteries. ' example: a7d56cb5-2dac-48d4-952a-6eb75ee0ce18 power: type: number format: double description: 'Power is the measured power used to charge/discharge the battery. Unit W, Meaning, Positive values indicate discharging. Negative values indicate charging. ' charge: type: number format: double minimum: 0 description: 'Charge is the measured power used to charge the battery. Unit W. Positive values indicate charging power. ' discharge: type: number format: double minimum: 0 description: 'Discharge is the measured power used to discharge the battery. Unit W. Positive values indicate discharging power. ' remainingCharge: type: number format: double description: RemainingCharge is the amount of energy left. capacity: type: number format: double description: Maximum energy the battery can provide in Wh. nominalCapacity: type: number format: double description: Nominal capacity of the battery in Wh. stateOfCharge: type: number format: double description: 'State of Charge indicates how full a battery is. Unit Percentage points 0.0-1.0. ' x-readme-ref-name: BatteryMeasurement batteries: type: array description: Battery measurements for each battery in the system. items: title: Battery Measurement description: 'MeasurementBattery represents the aggregated power or energy the gateway measured from a battery. ' type: object properties: applianceID: type: string description: 'ApplianceID is the battery''s appliance ID. It is empty for aggregated batteries. ' example: a7d56cb5-2dac-48d4-952a-6eb75ee0ce18 power: type: number format: double description: 'Power is the measured power used to charge/discharge the battery. Unit W, Meaning, Positive values indicate discharging. Negative values indicate charging. ' charge: type: number format: double minimum: 0 description: 'Charge is the measured power used to charge the battery. Unit W. Positive values indicate charging power. ' discharge: type: number format: double minimum: 0 description: 'Discharge is the measured power used to discharge the battery. Unit W. Positive values indicate discharging power. ' remainingCharge: type: number format: double description: RemainingCharge is the amount of energy left. capacity: type: number format: double description: Maximum energy the battery can provide in Wh. nominalCapacity: type: number format: double description: Nominal capacity of the battery in Wh. stateOfCharge: type: number format: double description: 'State of Charge indicates how full a battery is. Unit Percentage points 0.0-1.0. ' x-readme-ref-name: BatteryMeasurement heatPump: type: number format: double description: 'Aggregated measured power/energy for heat pumps. ' heatPumpExternal: type: number format: double description: "Aggregated measured power/energy for heat pumps that have their own \nheat pump tariff.\n" heatPumps: type: array description: Heat pump measurements for each heat pump in the system. items: title: Heat pump measurement type: object properties: applianceID: type: string power: type: number format: double sgReadyState: type: string default: UNKNOWN enum: - UNKNOWN - 'OFF' - AUTO - RECOMMEND_ON - 'ON' description: Defines the state set for SG Ready. x-readme-ref-name: HeatPumpMeasurement evChargingStation: title: 'MeasurementEVStation represents the power or energy the gateway measured from a ev charging station ' type: object properties: applianceID: type: string description: gridX API internal ID of the appliance. example: a7d56cb5-2dac-48d4-952a-6eb75ee0ce18 power: type: number format: double description: 'Measured power used to charge/discharge via EV station, positive values indicate charging, negatives discharging. ' charge: type: number format: double minimum: 0 description: 'Charge is the measured power used to charge the EV. Unit W. Positive values indicate charging power. ' discharge: type: number format: double minimum: 0 description: 'Discharge is the measured power used to discharge the EV. Unit W. Positive values indicate discharging power. ' stateOfCharge: type: number format: double description: 'Percentage of the EVs battery capacity charged (0.0-1.0). ' readingTotal: type: number format: double description: The sum of all meter readings in Wh. readingTariff1: type: number format: double description: The meter reading of meter tariff 1 in Wh. readingTariff2: type: number format: double description: The meter reading of meter tariff 2 in Wh. plugState: type: string description: Defines whether this EV is currently plugged in the charging station and whether it's charging. default: UNPLUGGED enum: - UNPLUGGED - PLUGGED_ON_STATION - PLUGGED_ON_STATION_AND_PLUGGED_ON_VEHICLE stationState: type: string description: Describes the status of the charging station. Note that this value is only meaningful in live measurements. default: UNKNOWN enum: - UNKNOWN - NOT_READY - READY - CHARGING - CHARGING_INTERRUPTED - ERROR - AUTHORIZATION_REJECTED - ZERO_POWER_LOCK - CHARGING_IN_PHASE_SWITCH currentL1: type: number format: double description: Current of the first phase in Ampere. currentL2: type: number format: double description: Current of the second phase in Ampere. currentL3: type: number format: double description: Current of the third phase in Ampere. x-readme-ref-name: EVStationMeasurement evChargingStations: type: array description: "Charging station measurements for all charging stations that are \npart of the system.\n" items: title: 'MeasurementEVStation represents the power or energy the gateway measured from a ev charging station ' type: object properties: applianceID: type: string description: gridX API internal ID of the appliance. example: a7d56cb5-2dac-48d4-952a-6eb75ee0ce18 power: type: number format: double description: 'Measured power used to charge/discharge via EV station, positive values indicate charging, negatives discharging. ' charge: type: number format: double minimum: 0 description: 'Charge is the measured power used to charge the EV. Unit W. Positive values indicate charging power. ' discharge: type: number format: double minimum: 0 description: 'Discharge is the measured power used to discharge the EV. Unit W. Positive values indicate discharging power. ' stateOfCharge: type: number format: double description: 'Percentage of the EVs battery capacity charged (0.0-1.0). ' readingTotal: type: number format: double description: The sum of all meter readings in Wh. readingTariff1: type: number format: double description: The meter reading of meter tariff 1 in Wh. readingTariff2: type: number format: double description: The meter reading of meter tariff 2 in Wh. plugState: type: string description: Defines whether this EV is currently plugged in the charging station and whether it's charging. default: UNPLUGGED enum: - UNPLUGGED - PLUGGED_ON_STATION - PLUGGED_ON_STATION_AND_PLUGGED_ON_VEHICLE stationState: type: string description: Describes the status of the charging station. Note that this value is only meaningful in live measurements. default: UNKNOWN enum: - UNKNOWN - NOT_READY - READY - CHARGING - CHARGING_INTERRUPTED - ERROR - AUTHORIZATION_REJECTED - ZERO_POWER_LOCK - CHARGING_IN_PHASE_SWITCH currentL1: type: number format: double description: Current of the first phase in Ampere. currentL2: type: number format: double description: Current of the second phase in Ampere. currentL3: type: number format: double description: Current of the third phase in Ampere. x-readme-ref-name: EVStationMeasurement consumption: type: number format: double description: Adjusted power/energy of the system. totalConsumption: type: number format: double description: 'Adjusted power/energy of the system including heatpumps and EV charging stations. ' selfConsumption: type: number format: double description: 'Power/Energy consumed through production and charged into battery. ' directConsumption: type: number format: double description: 'Power/energy consumed through production directly. ' directConsumptionHousehold: type: number format: double description: 'Power/energy consumed by the household through production directly. ' directConsumptionHeatPump: type: number format: double description: 'Power/energy consumed by the heat pump through production directly. ' directConsumptionEV: type: number format: double description: 'Power/energy consumed by the EV through production directly. ' directConsumptionHeater: type: number format: double description: 'Power/energy consumed by the heater through production directly. ' selfSupply: type: number format: double description: 'Power/energy consumed through storage and production. ' selfSufficiencyRate: type: number format: double description: 'Ratio of produced energy vs total consumed energy (0.0-1.0). ' example: 0.9 selfConsumptionRate: type: number format: double description: Ratio of self consumption vs production (0.0-1.0). directConsumptionRate: type: number format: double description: Ratio of direct consumption vs production (0.0-1.0). heating: type: number format: double description: Aggregated power/energy measured for heaters. heatingTemperature: type: number format: double description: Average temperature of the heaters in °C. heaters: type: array description: 'Heating measurement for all heaters that are part of the system. ' items: title: Heater Measurement type: object properties: measuredAt: type: string format: date-time description: Represents the time when the data was measured. applianceID: type: string description: Unique identifier for referencing a heater. power: type: number format: double description: Power consumed by the heater in W. powerL1: type: number format: int64 description: Power consumed by the heater on the first phase in W. powerL2: type: number format: int64 description: Power consumed by the heater on the second phase in W. powerL3: type: number format: int64 description: Power consumed by the heater on the third phase in W. temperature: type: number format: double description: Temperature measured by this heater in °C. minTemperature: type: number format: double description: Minimum temperature measured by this heater in °C. maxTemperature: type: number format: double description: Maximum temperature measured by this heater in °C. x-readme-ref-name: MeasurementHeating appliancePower: type: number format: double description: 'Power of the appliances with misc location, empty for energy. ' appliances: type: array items: title: Additional meter appliances description: "Used in installations that have multiple grid meters, e.g. for \nmulti family homes which a central PV but multiple meters.\n" type: object properties: applianceID: type: string description: gridX API internal identifier of the meter. example: a7d56cb5-2dac-48d4-952a-6eb75ee0ce18 power: type: number format: double description: Power/energy measured for this meter in W. kind: type: string description: Kind of the appliance measurement. required: - applianceID x-readme-ref-name: MeasurementAppliance gridMeterReadingPositive: type: number format: double description: 'Meter reading for grid in Ws (Imported Energy), empty for energy. ' gridMeterReadingNegative: type: number format: double description: 'Meter reading for grid in Ws (Exported Energy), empty for energy. ' heatPumpMeterReadingPositive: type: number format: double description: "Meter reading for heatpump in Ws (Imported Energy), empty for \nenergy.\n" heatPumpMeterReadingNegative: type: number format: double description: "Meter Reading for heatpump in Ws (Exported Energy), empty for \nenergy.\n" windTurbine: type: number format: double fuelCellMeterReadingPositive: type: number format: double description: Meter reading for FuelCell in Ws (Imported Energy). fuelCellMeterReadingNegative: type: number format: double description: Meter reading for FuelCell in Ws (Exported Energy). l1CurtailmentPower: type: number format: double description: "Potential max. charging power minus the actual setpoint in Ws on \nphase 1.\n" l2CurtailmentPower: type: number format: double description: "Potential max. charging power minus the actual setpoint in Ws on \nphase 2.\n" l3CurtailmentPower: type: number format: double description: "Potential max. charging power minus the actual setpoint in Ws on \nphase 3.\n" fuseProtectionCount: type: integer description: 'Number of times the fuse was protected, based on the curtailed power over all phases. ' airConditioner: type: number format: double description: 'Combined power of all air conditioner assets. ' x-readme-ref-name: Measurement '403': description: Forbidden. content: application/vnd.gridx.v2+json: schema: readOnly: true allOf: - title: General Exception description: Represents a general error structure returned by our REST API. type: object properties: message: type: string description: Message represents the message reported to the user. details: type: array description: 'Details represents detail information for the user to fix this problem ' items: type: string required: - message x-readme-ref-name: GeneralException - title: UnauthorizedError - Forbidden Error description: Forbidden Error example: message: Bad credentials x-readme-ref-name: ForbiddenException '404': description: Entity Not found. content: application/vnd.gridx.v2+json: schema: readOnly: true allOf: - title: General Exception description: Represents a general error structure returned by our REST API. type: object properties: message: type: string description: Message represents the message reported to the user. details: type: array description: 'Details represents detail information for the user to fix this problem ' items: type: string required: - message x-readme-ref-name: GeneralException - title: ClientError - Not Found description: Not Found indicates that the entity was not found. example: message: Not Found x-readme-ref-name: NotFoundException '422': description: Validation failed. content: application/vnd.gridx.v2+json: schema: readOnly: true allOf: - title: General Exception description: Represents a general error structure returned by our REST API. type: object properties: message: type: string description: Message represents the message reported to the user. details: type: array description: 'Details represents detail information for the user to fix this problem ' items: type: string required: - message x-readme-ref-name: GeneralException - title: ClientError - Validation description: 'Validation indicates that the request body contains fields which does not pass the validation. ' type: object required: - message - details example: message: Validation failed details: - email is not valid x-readme-ref-name: InvalidException '500': description: There has been an internal error on our side. We're looking into it. content: application/vnd.gridx.v2+json: schema: readOnly: true allOf: - title: General Exception description: Represents a general error structure returned by our REST API. type: object properties: message: type: string description: Message represents the message reported to the user. details: type: array description: 'Details represents detail information for the user to fix this problem ' items: type: string required: - message x-readme-ref-name: GeneralException - title: ServerSideError - Internal Server Error description: Internal Server Error example: message: Internal Server Error x-readme-ref-name: InternalException x-code-samples: - lang: python label: Python source: 'import requests url = "https://api.gridx.de/systems/systemID/live" headers = {"accept": "application/vnd.gridx.v2+json"} response = requests.get(url, headers=headers) print(response.text)' - lang: shell label: Shell source: "curl --request GET \\\n --url https://api.gridx.de/systems/systemID/live \\\n --header 'accept: application/vnd.gridx.v2+json'" - lang: go label: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io\"\n)\n\nfunc main() {\n\n\turl := \"https://api.gridx.de/systems/systemID/live\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"accept\", \"application/vnd.gridx.v2+json\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := io.ReadAll(res.Body)\n\n\tfmt.Println(string(body))\n\n}" - lang: javascript label: Javascript source: "const options = {method: 'GET', headers: {accept: 'application/vnd.gridx.v2+json'}};\n\nfetch('https://api.gridx.de/systems/systemID/live', options)\n .then(res => res.json())\n .then(res => console.log(res))\n .catch(err => console.error(err));" - lang: java label: Java source: "OkHttpClient client = new OkHttpClient();\n\nRequest request = new Request.Builder()\n .url(\"https://api.gridx.de/systems/systemID/live\")\n .get()\n .addHeader(\"accept\", \"application/vnd.gridx.v2+json\")\n .build();\n\nResponse response = client.newCall(request).execute();" - lang: java label: Kotlin source: "val client = OkHttpClient()\n\nval request = Request.Builder()\n .url(\"https://api.gridx.de/systems/systemID/live\")\n .get()\n .addHeader(\"accept\", \"application/vnd.gridx.v2+json\")\n .build()\n\nval response = client.newCall(request).execute()" - lang: javascript label: Swift source: 'import Foundation let url = URL(string: "https://api.gridx.de/systems/systemID/live")! var request = URLRequest(url: url) request.httpMethod = "GET" request.timeoutInterval = 10 request.allHTTPHeaderFields = ["accept": "application/vnd.gridx.v2+json"] let (data, _) = try await URLSession.shared.data(for: request) print(String(decoding: data, as: UTF8.self))' - lang: csharp label: C# source: 'using RestSharp; var options = new RestClientOptions("https://api.gridx.de/systems/systemID/live"); var client = new RestClient(options); var request = new RestRequest(""); request.AddHeader("accept", "application/vnd.gridx.v2+json"); var response = await client.GetAsync(request); Console.WriteLine("{0}", response.Content); ' servers: - url: https://api.gridx.de description: Production /systems/{systemID}/historical: get: operationId: getSystemHistoricalMeasurements summary: Historical Measurements for Systems description: 'Lists aggregated measurements of a system over a period of time. System measurements are the result of incorporating measurements from all appliances that are part of a system. This allows computing e.g. overall consumption adding producers (e.g. PV) and subtracting consumers (e.g. EV charging stations). This aggregation is performed in various resolutions to suit different use cases. See the ''resolution'' parameter for a list of options. Depending on the resolution parameter, the response contains either power or energy measurements (unless otherwise documented): - **power** (unit: W): `15m`, `1h` - **energy** (unit: Wh): `1d`, `1w`, `1M` Measurements are "aligned" differently whether they contain energy or power measurements: - For power values the data point is written after the aggregated time span. For the interval 2018-04-01T00:00:00Z/2018-04-02T00:00:00Z with resolution 15m the first observation will be recorded at 2018-04-01T00:15:00Z - For energy values the observation is stored at the beginning of the aggregated time span. For the interval 2018-04-01T00:00:00Z/2018-04-05T00:00:00Z and resolution 1d the first observation will be recorded at 2018-04-01T00:00:00Z The `total` object of the response contains an aggregation of the individual data points over time and therefore is an energy value. The `total.measuredAt` field is an interval containing all data points in the requested interval. In order to reduce the duration of the endpoint, the gridX API imposes limitations on the interval for a given resolution: | Resolution | Limit | |------------|-------------------------| | 15m | intervals up to 1 day | | 1h | intervals up to 1 week | | 1d | intervals up to 1 month | | 1w | intervals up to 1 month | | 1M | intervals up to 5 years |' tags: - System security: - HeaderAuth: - SystemMeasurementsRead parameters: - name: systemID description: 'Unique identifier used to access a system. ' in: path required: true schema: type: string format: uuid example: aa3e5a93-bb38-4b15-b7f2-af40daf3a1dc - name: interval description: 'Requested time interval, formatted in ISO8601. In this format the start and end point of the interval are formatted according to RFC3339 and separated by a slash "/". ' in: query required: true allowReserved: true example: 2021-12-24T18:21:00Z/2021-12-25T18:21:00Z schema: type: string format: datetime - name: resolution description: 'Requested resolution, formatted in ISO8601 units. In this format the resolution is formatted with a single number and corresponding ISO8601 date or time unit. ' in: query example: 1h schema: type: string default: 1h enum: - 15m - 1h - 1d - 1w - 1M responses: '200': description: Successfully returned system's aggregated measurements. content: application/vnd.gridx.v2+json: schema: title: Measurements type: object properties: total: allOf: - title: Extended Measurement type: object properties: measuredAt: type: string description: Time when the data was measured. gridL1: type: number format: double description: GridL1 is the part of the grid connection point's first phase. gridL2: type: number format: double description: GridL2 is the part of the grid connection point's second phase. gridL3: type: number format: double description: GridL3 is the part of the grid connection point's second phase. gridSupplyLimit: type: number format: double description: 'GridSupplyLimit is the restriction of supplied power at the grid connection point. ' photovoltaic: type: number format: double description: 'Photovoltaic is the sum of measured power/energy of all photovoltaic systems connected behind a system''s grid connection. ' photovoltaicExternal: type: number format: double description: 'PhotovoltaicExternal is the sum of measured power/energy of all photovoltaic systems connected outside a system''s grid connection. ' blockTypeThermalPowerStation: type: number format: double description: 'BTTPPower is the measured power for the block-type thermal power station. ' fuelCell: type: number format: double description: FuelCell is the measured power/energy in front of the fuel cells. production: type: number format: double description: Production is sum of the producers. batteries: type: array items: title: Battery Measurement description: 'MeasurementBattery represents the aggregated power or energy the gateway measured from a battery. ' type: object properties: applianceID: type: string description: 'ApplianceID is the battery''s appliance ID. It is empty for aggregated batteries. ' example: a7d56cb5-2dac-48d4-952a-6eb75ee0ce18 power: type: number format: double description: 'Power is the measured power used to charge/discharge the battery. Unit W, Meaning, Positive values indicate discharging. Negative values indicate charging. ' charge: type: number format: double minimum: 0 description: 'Charge is the measured power used to charge the battery. Unit W. Positive values indicate charging power. ' discharge: type: number format: double minimum: 0 description: 'Discharge is the measured power used to discharge the battery. Unit W. Positive values indicate discharging power. ' remainingCharge: type: number format: double description: RemainingCharge is the amount of energy left. capacity: type: number format: double description: Maximum energy the battery can provide in Wh. nominalCapacity: type: number format: double description: Nominal capacity of the battery in Wh. stateOfCharge: type: number format: double description: 'State of Charge indicates how full a battery is. Unit Percentage points 0.0-1.0. ' x-readme-ref-name: BatteryMeasurement heatPump: type: number format: double description: 'HeatPump is the sum of measured power/energy of all heat pumps connected behind a system''s grid connection. ' heatPumpExternal: type: number format: double description: 'HeatPump is the sum of measured power/energy of all heat pumps connected outside a system''s grid connection, e.g. for heat pumps that have a heat pump specific electricity tariff. ' evChargingStations: type: array items: title: 'MeasurementEVStation represents the power or energy the gateway measured from a ev charging station ' type: object properties: applianceID: type: string description: gridX API internal ID of the appliance. example: a7d56cb5-2dac-48d4-952a-6eb75ee0ce18 power: type: number format: double description: 'Measured power used to charge/discharge via EV station, positive values indicate charging, negatives discharging. ' charge: type: number format: double minimum: 0 description: 'Charge is the measured power used to charge the EV. Unit W. Positive values indicate charging power. ' discharge: type: number format: double minimum: 0 description: 'Discharge is the measured power used to discharge the EV. Unit W. Positive values indicate discharging power. ' stateOfCharge: type: number format: double description: 'Percentage of the EVs battery capacity charged (0.0-1.0). ' readingTotal: type: number format: double description: The sum of all meter readings in Wh. readingTariff1: type: number format: double description: The meter reading of meter tariff 1 in Wh. readingTariff2: type: number format: double description: The meter reading of meter tariff 2 in Wh. plugState: type: string description: Defines whether this EV is currently plugged in the charging station and whether it's charging. default: UNPLUGGED enum: - UNPLUGGED - PLUGGED_ON_STATION - PLUGGED_ON_STATION_AND_PLUGGED_ON_VEHICLE stationState: type: string description: Describes the status of the charging station. Note that this value is only meaningful in live measurements. default: UNKNOWN enum: - UNKNOWN - NOT_READY - READY - CHARGING - CHARGING_INTERRUPTED - ERROR - AUTHORIZATION_REJECTED - ZERO_POWER_LOCK - CHARGING_IN_PHASE_SWITCH currentL1: type: number format: double description: Current of the first phase in Ampere. currentL2: type: number format: double description: Current of the second phase in Ampere. currentL3: type: number format: double description: Current of the third phase in Ampere. x-readme-ref-name: EVStationMeasurement consumption: type: number format: double description: Consumption is adjusted power/energy of the system. totalConsumption: type: number format: double description: 'Adjusted power/energy of the system which includes heatpump and EV. ' selfConsumption: type: number format: double description: 'SelfConsumption is power/energy consumed through production and charged into battery. ' directConsumption: type: number format: double description: 'DirectConsumption is power/energy consumed from production directly. ' directConsumptionHousehold: type: number format: double description: 'DirectConsumptionHousehold is power/energy consumed by the household through production directly. ' directConsumptionHeatPump: type: number format: double description: 'DirectConsumptionHeatPump is power/energy consumed by the heat pump through production directly. ' directConsumptionEV: type: number format: double description: 'DirectConsumptionEV is power/energy consumed by the EV through production directly. ' directConsumptionHeater: type: number format: double description: 'DirectConsumptionHeater is the power/energy consumed by the heater through production directly. ' selfSupply: type: number format: double description: SelfSupply is power/energy consumed through storage and production. selfSufficiencyRate: type: number format: double selfConsumptionRate: type: number format: double directConsumptionRate: type: number format: double heating: type: number format: double description: HeatingPower is the aggregated amount of power measured for heaters. heatingTemperature: type: number format: double description: HeatingTemperature is temperature of the heaters. heaters: type: array description: 'Heating measurement for all heaters that are part of the system. ' items: title: Heater Measurement type: object properties: measuredAt: type: string format: date-time description: Represents the time when the data was measured. applianceID: type: string description: Unique identifier for referencing a heater. power: type: number format: double description: Power consumed by the heater in W. powerL1: type: number format: int64 description: Power consumed by the heater on the first phase in W. powerL2: type: number format: int64 description: Power consumed by the heater on the second phase in W. powerL3: type: number format: int64 description: Power consumed by the heater on the third phase in W. temperature: type: number format: double description: Temperature measured by this heater in °C. minTemperature: type: number format: double description: Minimum temperature measured by this heater in °C. maxTemperature: type: number format: double description: Maximum temperature measured by this heater in °C. x-readme-ref-name: MeasurementHeating appliancePower: type: number format: double description: AppliancePower is power of the appliances with misc location. appliances: type: array items: title: Additional meter appliances description: "Used in installations that have multiple grid meters, e.g. for \nmulti family homes which a central PV but multiple meters.\n" type: object properties: applianceID: type: string description: gridX API internal identifier of the meter. example: a7d56cb5-2dac-48d4-952a-6eb75ee0ce18 power: type: number format: double description: Power/energy measured for this meter in W. kind: type: string description: Kind of the appliance measurement. required: - applianceID x-readme-ref-name: MeasurementAppliance gridMeterReadingPositive: type: number format: double description: 'GridMeterReadingPositive is the meter Reading for grid in Ws (Imported Energy). ' gridMeterReadingNegative: type: number format: double description: 'GridMeterReadingPositive is the meter Reading for grid in Ws (Exported Energy). ' heatPumpMeterReadingPositive: type: number format: double description: 'HeatPumpMeterReadingPositive is the meter Reading for HeatPump in Ws (Imported Energy). ' heatPumpMeterReadingNegative: type: number format: double description: 'HeatPumpMeterReadingNegative is the meter Reading for HeatPump in Ws (Exported Energy). ' windTurbine: type: number format: double fuelCellMeterReadingPositive: type: number format: double description: Meter reading for FuelCell in Ws (Imported Energy). fuelCellMeterReadingNegative: type: number format: double description: Meter reading for FuelCell in Ws (Exported Energy). l1CurtailmentPower: type: number format: double description: 'Potential max. charging power minus the actual setpoint in Ws on phase 1. ' l2CurtailmentPower: type: number format: double description: 'Potential max. charging power minus the actual setpoint in Ws on phase 2. ' l3CurtailmentPower: type: number format: double description: 'Potential max. charging power minus the actual setpoint in Ws on phase 3. ' fuseProtectionCount: type: integer minimum: 0 description: 'Number of times the fuse was protected, based on the curtailed power over all phases. ' grid: title: Measurement Grid type: object properties: measuredAt: type: string format: date-time description: Time when the data was measured. feedIn: type: number format: double supply: type: number format: double supplyLimit: type: number format: double meterReading: title: Measurement Grid Meter Reading type: object properties: feedIn: type: number format: double supply: type: number format: double x-readme-ref-name: MeasurementGridMeterReading x-readme-ref-name: MeasurementGrid battery: title: Extended Battery Measurement type: object properties: charge: type: number format: double description: Power/energy charged to the battery. discharge: type: number format: double description: Power/energy discharged from the battery. stateOfCharge: type: number format: double description: 'Percentage of battery capacity charged (0.0-1.0). ' capacity: type: number format: double description: 'Capacity is the maximum energy the battery can provide in Wh. ' nominalCapacity: type: number format: double description: 'NominalCapacity is the nominal capacity of battery in Wh. ' x-readme-ref-name: MeasurementBatteryExtended evChargingStation: title: Extended EV Station Measurement type: object properties: charge: type: number format: double description: The measured charging power of the EV. discharge: type: number format: double description: Power/energy discharged from the EV. stateOfCharge: type: number format: double description: Percentage of EV battery charged (0.0-1.0). currentL1: type: number format: double description: 'Current on the first phase of the EV station in A (ampere). ' currentL2: type: number format: double description: Current on the second phase of the EV station in A. currentL3: type: number format: double description: Current on the third phase of the EV station in A. x-readme-ref-name: MeasurementEVStationExtended airConditioner: type: number format: double description: 'Combined power/energy of all air conditioner assets. It is the sum of the average per asset over the interval. ' x-readme-ref-name: MeasurementExtended - properties: measuredAt: description: 'Interval containing all data points in the requested interval formatted in ISO8601. ' type: string example: 2018-04-01T00:00:00Z/2018-04-05T00:00:00Z type: object data: type: array items: allOf: - title: Extended Measurement type: object properties: measuredAt: type: string description: Time when the data was measured. gridL1: type: number format: double description: GridL1 is the part of the grid connection point's first phase. gridL2: type: number format: double description: GridL2 is the part of the grid connection point's second phase. gridL3: type: number format: double description: GridL3 is the part of the grid connection point's second phase. gridSupplyLimit: type: number format: double description: 'GridSupplyLimit is the restriction of supplied power at the grid connection point. ' photovoltaic: type: number format: double description: 'Photovoltaic is the sum of measured power/energy of all photovoltaic systems connected behind a system''s grid connection. ' photovoltaicExternal: type: number format: double description: 'PhotovoltaicExternal is the sum of measured power/energy of all photovoltaic systems connected outside a system''s grid connection. ' blockTypeThermalPowerStation: type: number format: double description: 'BTTPPower is the measured power for the block-type thermal power station. ' fuelCell: type: number format: double description: FuelCell is the measured power/energy in front of the fuel cells. production: type: number format: double description: Production is sum of the producers. batteries: type: array items: title: Battery Measurement description: 'MeasurementBattery represents the aggregated power or energy the gateway measured from a battery. ' type: object properties: applianceID: type: string description: 'ApplianceID is the battery''s appliance ID. It is empty for aggregated batteries. ' example: a7d56cb5-2dac-48d4-952a-6eb75ee0ce18 power: type: number format: double description: 'Power is the measured power used to charge/discharge the battery. Unit W, Meaning, Positive values indicate discharging. Negative values indicate charging. ' charge: type: number format: double minimum: 0 description: 'Charge is the measured power used to charge the battery. Unit W. Positive values indicate charging power. ' discharge: type: number format: double minimum: 0 description: 'Discharge is the measured power used to discharge the battery. Unit W. Positive values indicate discharging power. ' remainingCharge: type: number format: double description: RemainingCharge is the amount of energy left. capacity: type: number format: double description: Maximum energy the battery can provide in Wh. nominalCapacity: type: number format: double description: Nominal capacity of the battery in Wh. stateOfCharge: type: number format: double description: 'State of Charge indicates how full a battery is. Unit Percentage points 0.0-1.0. ' x-readme-ref-name: BatteryMeasurement heatPump: type: number format: double description: 'HeatPump is the sum of measured power/energy of all heat pumps connected behind a system''s grid connection. ' heatPumpExternal: type: number format: double description: 'HeatPump is the sum of measured power/energy of all heat pumps connected outside a system''s grid connection, e.g. for heat pumps that have a heat pump specific electricity tariff. ' evChargingStations: type: array items: title: 'MeasurementEVStation represents the power or energy the gateway measured from a ev charging station ' type: object properties: applianceID: type: string description: gridX API internal ID of the appliance. example: a7d56cb5-2dac-48d4-952a-6eb75ee0ce18 power: type: number format: double description: 'Measured power used to charge/discharge via EV station, positive values indicate charging, negatives discharging. ' charge: type: number format: double minimum: 0 description: 'Charge is the measured power used to charge the EV. Unit W. Positive values indicate charging power. ' discharge: type: number format: double minimum: 0 description: 'Discharge is the measured power used to discharge the EV. Unit W. Positive values indicate discharging power. ' stateOfCharge: type: number format: double description: 'Percentage of the EVs battery capacity charged (0.0-1.0). ' readingTotal: type: number format: double description: The sum of all meter readings in Wh. readingTariff1: type: number format: double description: The meter reading of meter tariff 1 in Wh. readingTariff2: type: number format: double description: The meter reading of meter tariff 2 in Wh. plugState: type: string description: Defines whether this EV is currently plugged in the charging station and whether it's charging. default: UNPLUGGED enum: - UNPLUGGED - PLUGGED_ON_STATION - PLUGGED_ON_STATION_AND_PLUGGED_ON_VEHICLE stationState: type: string description: Describes the status of the charging station. Note that this value is only meaningful in live measurements. default: UNKNOWN enum: - UNKNOWN - NOT_READY - READY - CHARGING - CHARGING_INTERRUPTED - ERROR - AUTHORIZATION_REJECTED - ZERO_POWER_LOCK - CHARGING_IN_PHASE_SWITCH currentL1: type: number format: double description: Current of the first phase in Ampere. currentL2: type: number format: double description: Current of the second phase in Ampere. currentL3: type: number format: double description: Current of the third phase in Ampere. x-readme-ref-name: EVStationMeasurement consumption: type: number format: double description: Consumption is adjusted power/energy of the system. totalConsumption: type: number format: double description: 'Adjusted power/energy of the system which includes heatpump and EV. ' selfConsumption: type: number format: double description: 'SelfConsumption is power/energy consumed through production and charged into battery. ' directConsumption: type: number format: double description: 'DirectConsumption is power/energy consumed from production directly. ' directConsumptionHousehold: type: number format: double description: 'DirectConsumptionHousehold is power/energy consumed by the household through production directly. ' directConsumptionHeatPump: type: number format: double description: 'DirectConsumptionHeatPump is power/energy consumed by the heat pump through production directly. ' directConsumptionEV: type: number format: double description: 'DirectConsumptionEV is power/energy consumed by the EV through production directly. ' directConsumptionHeater: type: number format: double description: 'DirectConsumptionHeater is the power/energy consumed by the heater through production directly. ' selfSupply: type: number format: double description: SelfSupply is power/energy consumed through storage and production. selfSufficiencyRate: type: number format: double selfConsumptionRate: type: number format: double directConsumptionRate: type: number format: double heating: type: number format: double description: HeatingPower is the aggregated amount of power measured for heaters. heatingTemperature: type: number format: double description: HeatingTemperature is temperature of the heaters. heaters: type: array description: 'Heating measurement for all heaters that are part of the system. ' items: title: Heater Measurement type: object properties: measuredAt: type: string format: date-time description: Represents the time when the data was measured. applianceID: type: string description: Unique identifier for referencing a heater. power: type: number format: double description: Power consumed by the heater in W. powerL1: type: number format: int64 description: Power consumed by the heater on the first phase in W. powerL2: type: number format: int64 description: Power consumed by the heater on the second phase in W. powerL3: type: number format: int64 description: Power consumed by the heater on the third phase in W. temperature: type: number format: double description: Temperature measured by this heater in °C. minTemperature: type: number format: double description: Minimum temperature measured by this heater in °C. maxTemperature: type: number format: double description: Maximum temperature measured by this heater in °C. x-readme-ref-name: MeasurementHeating appliancePower: type: number format: double description: AppliancePower is power of the appliances with misc location. appliances: type: array items: title: Additional meter appliances description: "Used in installations that have multiple grid meters, e.g. for \nmulti family homes which a central PV but multiple meters.\n" type: object properties: applianceID: type: string description: gridX API internal identifier of the meter. example: a7d56cb5-2dac-48d4-952a-6eb75ee0ce18 power: type: number format: double description: Power/energy measured for this meter in W. kind: type: string description: Kind of the appliance measurement. required: - applianceID x-readme-ref-name: MeasurementAppliance gridMeterReadingPositive: type: number format: double description: 'GridMeterReadingPositive is the meter Reading for grid in Ws (Imported Energy). ' gridMeterReadingNegative: type: number format: double description: 'GridMeterReadingPositive is the meter Reading for grid in Ws (Exported Energy). ' heatPumpMeterReadingPositive: type: number format: double description: 'HeatPumpMeterReadingPositive is the meter Reading for HeatPump in Ws (Imported Energy). ' heatPumpMeterReadingNegative: type: number format: double description: 'HeatPumpMeterReadingNegative is the meter Reading for HeatPump in Ws (Exported Energy). ' windTurbine: type: number format: double fuelCellMeterReadingPositive: type: number format: double description: Meter reading for FuelCell in Ws (Imported Energy). fuelCellMeterReadingNegative: type: number format: double description: Meter reading for FuelCell in Ws (Exported Energy). l1CurtailmentPower: type: number format: double description: 'Potential max. charging power minus the actual setpoint in Ws on phase 1. ' l2CurtailmentPower: type: number format: double description: 'Potential max. charging power minus the actual setpoint in Ws on phase 2. ' l3CurtailmentPower: type: number format: double description: 'Potential max. charging power minus the actual setpoint in Ws on phase 3. ' fuseProtectionCount: type: integer minimum: 0 description: 'Number of times the fuse was protected, based on the curtailed power over all phases. ' grid: title: Measurement Grid type: object properties: measuredAt: type: string format: date-time description: Time when the data was measured. feedIn: type: number format: double supply: type: number format: double supplyLimit: type: number format: double meterReading: title: Measurement Grid Meter Reading type: object properties: feedIn: type: number format: double supply: type: number format: double x-readme-ref-name: MeasurementGridMeterReading x-readme-ref-name: MeasurementGrid battery: title: Extended Battery Measurement type: object properties: charge: type: number format: double description: Power/energy charged to the battery. discharge: type: number format: double description: Power/energy discharged from the battery. stateOfCharge: type: number format: double description: 'Percentage of battery capacity charged (0.0-1.0). ' capacity: type: number format: double description: 'Capacity is the maximum energy the battery can provide in Wh. ' nominalCapacity: type: number format: double description: 'NominalCapacity is the nominal capacity of battery in Wh. ' x-readme-ref-name: MeasurementBatteryExtended evChargingStation: title: Extended EV Station Measurement type: object properties: charge: type: number format: double description: The measured charging power of the EV. discharge: type: number format: double description: Power/energy discharged from the EV. stateOfCharge: type: number format: double description: Percentage of EV battery charged (0.0-1.0). currentL1: type: number format: double description: 'Current on the first phase of the EV station in A (ampere). ' currentL2: type: number format: double description: Current on the second phase of the EV station in A. currentL3: type: number format: double description: Current on the third phase of the EV station in A. x-readme-ref-name: MeasurementEVStationExtended airConditioner: type: number format: double description: 'Combined power/energy of all air conditioner assets. It is the sum of the average per asset over the interval. ' x-readme-ref-name: MeasurementExtended - properties: measuredAt: format: date-time x-readme-ref-name: Measurements '403': description: Forbidden. content: application/vnd.gridx.v2+json: schema: readOnly: true allOf: - title: General Exception description: Represents a general error structure returned by our REST API. type: object properties: message: type: string description: Message represents the message reported to the user. details: type: array description: 'Details represents detail information for the user to fix this problem ' items: type: string required: - message x-readme-ref-name: GeneralException - title: UnauthorizedError - Forbidden Error description: Forbidden Error example: message: Bad credentials x-readme-ref-name: ForbiddenException '404': description: Entity Not found. content: application/vnd.gridx.v2+json: schema: readOnly: true allOf: - title: General Exception description: Represents a general error structure returned by our REST API. type: object properties: message: type: string description: Message represents the message reported to the user. details: type: array description: 'Details represents detail information for the user to fix this problem ' items: type: string required: - message x-readme-ref-name: GeneralException - title: ClientError - Not Found description: Not Found indicates that the entity was not found. example: message: Not Found x-readme-ref-name: NotFoundException '422': description: Validation failed. content: application/vnd.gridx.v2+json: schema: readOnly: true allOf: - title: General Exception description: Represents a general error structure returned by our REST API. type: object properties: message: type: string description: Message represents the message reported to the user. details: type: array description: 'Details represents detail information for the user to fix this problem ' items: type: string required: - message x-readme-ref-name: GeneralException - title: ClientError - Validation description: 'Validation indicates that the request body contains fields which does not pass the validation. ' type: object required: - message - details example: message: Validation failed details: - email is not valid x-readme-ref-name: InvalidException '500': description: There has been an internal error on our side. We're looking into it. content: application/vnd.gridx.v2+json: schema: readOnly: true allOf: - title: General Exception description: Represents a general error structure returned by our REST API. type: object properties: message: type: string description: Message represents the message reported to the user. details: type: array description: 'Details represents detail information for the user to fix this problem ' items: type: string required: - message x-readme-ref-name: GeneralException - title: ServerSideError - Internal Server Error description: Internal Server Error example: message: Internal Server Error x-readme-ref-name: InternalException x-code-samples: - lang: python label: Python source: 'import requests url = "https://api.gridx.de/systems/systemID/historical" headers = {"accept": "application/vnd.gridx.v2+json"} response = requests.get(url, headers=headers) print(response.text)' - lang: shell label: Shell source: "curl --request GET \\\n --url https://api.gridx.de/systems/systemID/historical \\\n --header 'accept: application/vnd.gridx.v2+json'" - lang: go label: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io\"\n)\n\nfunc main() {\n\n\turl := \"https://api.gridx.de/systems/systemID/historical\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"accept\", \"application/vnd.gridx.v2+json\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := io.ReadAll(res.Body)\n\n\tfmt.Println(string(body))\n\n}" - lang: javascript label: Javascript source: "const options = {method: 'GET', headers: {accept: 'application/vnd.gridx.v2+json'}};\n\nfetch('https://api.gridx.de/systems/systemID/historical', options)\n .then(res => res.json())\n .then(res => console.log(res))\n .catch(err => console.error(err));" - lang: java label: Java source: "OkHttpClient client = new OkHttpClient();\n\nRequest request = new Request.Builder()\n .url(\"https://api.gridx.de/systems/systemID/historical\")\n .get()\n .addHeader(\"accept\", \"application/vnd.gridx.v2+json\")\n .build();\n\nResponse response = client.newCall(request).execute();" - lang: java label: Kotlin source: "val client = OkHttpClient()\n\nval request = Request.Builder()\n .url(\"https://api.gridx.de/systems/systemID/historical\")\n .get()\n .addHeader(\"accept\", \"application/vnd.gridx.v2+json\")\n .build()\n\nval response = client.newCall(request).execute()" - lang: javascript label: Swift source: 'import Foundation let url = URL(string: "https://api.gridx.de/systems/systemID/historical")! var request = URLRequest(url: url) request.httpMethod = "GET" request.timeoutInterval = 10 request.allHTTPHeaderFields = ["accept": "application/vnd.gridx.v2+json"] let (data, _) = try await URLSession.shared.data(for: request) print(String(decoding: data, as: UTF8.self))' - lang: csharp label: C# source: 'using RestSharp; var options = new RestClientOptions("https://api.gridx.de/systems/systemID/historical"); var client = new RestClient(options); var request = new RestRequest(""); request.AddHeader("accept", "application/vnd.gridx.v2+json"); var response = await client.GetAsync(request); Console.WriteLine("{0}", response.Content); ' servers: - url: https://api.gridx.de description: Production /accounts/{accountID}/systems: get: operationId: listAccountSystems summary: List Account's Systems tags: - System parameters: - name: accountID description: 'Unique identifier used to access an account. ' in: path required: true schema: type: string format: uuid example: 17874c1b-d073-4b06-bf01-a1497fbe1142 - name: per_page description: 'Requested number of items per page. ' in: query schema: type: integer format: int32 default: 20 minimum: 20 maximum: 500 example: 10 - name: page description: 'Requested page, to be used in combination with the `per_page` parameter. ' in: query schema: type: integer format: int32 default: 1 minimum: 1 example: 1 - name: embed description: 'Describes which embedded fields of the system should be populated. **Only applicable for stable version, removed in the draft!** ' deprecated: true in: query schema: type: string enum: - user - name: include description: 'This query param allows to set certain fields only when needed. This makes the request faster as it requires to load only necessary data. Requesting any of the `gateways` nested fields like `gateways.applianceComposition`, `gateways.connectionStatus` or `gateways.additionalIdentifiers` will result in the `gateways` field being set. However, only requesting the `gateways` field will not set these expensive nested fields by default. The response would only include basic `gateways` nested fields. **Only applicable for stable version!** If this param is set, only the specified fields are included. All other fields, which are possible to include, will be excluded then. assetsStatus and assetsKinds and tags are only available in the draft version. **Only applicable for draft version!** If this param is not set, none of the specified fields will be included in the response. ' in: query explode: false schema: type: array items: type: string enum: - gateways - gateways.applianceComposition - gateways.connectionStatus - gateways.additionalIdentifiers - accounts - location - priorities - appliancePriorities - status - gatewayStatus - parentID - visibleFields - visibleAppliances - productOption - assetsStatus - assetsKinds - assetsGatewayType - tags - name: filterBy in: query required: false description: "Use this query parameter to filter the result set by a `field:operator(value)` expression.\n\nCombine multiple expressions (the result matches _all_ of them) by repeating the parameter, e.g.\n`?filterBy=field1:op(value1)&filterBy=field2:op(value2,value3)`. A single semicolon-separated value also works,\nbut `;` **must** be URL-encoded as `%3B`, since an unencoded `;` is dropped by the server.\n\nSupported operators are:\n* `eq` - equals. Accepts 0 or 1 values and is case sensitive\n* `ne` - not equals. Accepts 0 or 1 values and is case sensitive\n* `has` - has. Checks if a matching tag name/tag value pair exists (see /systems/{systemID}/tags). Accepts exactly 2 values and is case sensitive\n* `incl` - includes. Accepts 1 or more values and is case sensitive\n* `excl` - excludes. Accepts 1 or more values and is case sensitive\n* `lt` - less than. Accepts exactly one value and is case sensitive\n* `le` - less than or equal. Accepts exactly one value and is case sensitive\n* `gt` - greater than. Accepts exactly one value and is case sensitive\n* `ge` - greater than or equal. Accepts exactly one value and is case sensitive\n* `li` - like. Accepts exactly one value and is case insensitive\n* `empty` - is empty. Accepts no values and is case insensitive\n* `nempty` - is not empty. Accepts no values and is case insensitive\n* `any` - applies to array fields, true if it contains any of the given values. Accepts 1 or more values and is case sensitive\n* `only` - applies to array fields, true every distinct value in the field is among the given values. Accepts 1 or more values and is case sensitive\n* `all` - applies to array fields, true if it contains all of the given values. Accepts 1 or more values and is case sensitive\n* `none` - applies to array fields, true if it contains none of the given values. Accepts 1 or more values and is case sensitive\n* `bool` - applies to boolean fields. Accepts 1 string value that is either `true` or `false`\n\nNot all fields are available for filtering and not all filters are supported on all fields. The available \nfields are:\n* `name` - accepts `eq`, `incl`, `excl`, `li`\n* `gatewaySN` - accepts `eq`, `incl`, `excl`, `li`, `empty`, `nempty`\n* `wizardStatus` - accepts `eq`, `neq`, `incl`, `excl`, `li`\n* `gatewayStatus` - accepts `eq`, `neq`, `incl`, `excl`, `li`\n* `createdAt` - accepts `lt`, `le`, `gt`, `ge`\n* `updatedAt` - accepts `lt`, `le`, `gt`, `ge`\n* `lastHeartbeatReceivedAt` - accepts `lt`, `le`, `gt`, `ge` (deprecated, will be removed in future versions)\n* `parentID` - accepts `eq`, `incl`, `excl`\n* `systemID` - accepts `eq`, `incl`, `excl`\n* `gatewayID` - accepts `eq`, `incl`, `excl`, `empty`, `nempty`\n* `assetsGatewayType` - accepts `eq`, `ne`, `incl`, `excl`\n* `tags` - accepts `has`\n* `assetsStatus` - accepts `eq`, `neq`, `incl`, `excl`, `li`\n* `assetsKinds` - accepts `any`, `all`, `none`\n* `isStarred` - accepts `bool`\n\nAllowed values for the operators are dependent on the field they are applied to. The allowed values for each field are:\n* `name` - accepts any string value\n* `gatewaySN` - accepts any string value\n* `wizardStatus` - accepts any string value\n* `gatewayStatus` - accepts `AVAILABLE`, `UNAVAILABLE`, `UNKNOWN`\n* `createdAt` - accepts a timestamp in RFC3339 format, e.g. `2021-10-13T14:23:30Z`\n* `updatedAt` - accepts a timestamp in RFC3339 format, e.g. `2021-10-13T14:23:30Z`\n* `lastHeartbeatReceivedAt` - accepts a timestamp in RFC3339 format, e.g. `2021-10-13T14:23:30Z`\n* `parentID` - accepts a UUID string value, e.g. `550e8400-e29b-41d4-a716-446655440000`\n* `systemID` - accepts a UUID string value, e.g. `550e8400-e29b-41d4-a716-446655440000`\n* `gatewayID` - accepts a UUID string value, e.g. `550e8400-e29b-41d4-a716-446655440000`\n* `assetsGatewayType` - accepts `GRIDBOX`, `CLOUD`, or `HYBRID` (HYBRID means the system has both GRIDBOX and CLOUD assets)\n* `tags` - accepts any string value\n* `assetsStatus` - accepts `AVAILABLE`, `UNAVAILABLE`, `UNHEALTHY`, `UNKNOWN`\n* `assetsKinds` - accepts any string, refer to the list of available asset kinds in the documentation\n* `isStarred` - accepts any boolean value, i.e. `true` or `false`\n\nMake sure that the string is URL encoded according to RFC 3986.\n" schema: type: string pattern: '^(((\w+):(eq|ne|has|incl|excl|lt|le|gt|ge|li|empty|nempty|any|only|all|none|bool)\((([^,();]*)(,[^,();]+)*))\))(;((\w+):(eq|ne|has|incl|excl|lt|le|gt|ge|li|empty|nempty|any|only|all|none|bool)\((([^,();]*)(,[^,();]+)*)\)))*$ ' style: form explode: false - name: sortBy in: query required: false description: "Specify a comma-separated list of direction and fields that the result set will be sorted by. Note that the \norder of the fields matters and the leftmost field in the list will take the highest precedence. The \noperator can be either `+` for sorting the column in an ascending order (typically a to z or 1 to 9) or `-`\nfor a descending order (from z to a or 9 to 1). The field names are identical to the ones that are available\nfor filtering (see `filterBy` query parameter).\n" schema: type: string pattern: ^(\+|-)(\w+)(,(\+|-)(\w+))*$ style: form explode: false example: +field1,-field2 - name: limit description: 'Limit the number of elements returned responses to the specified number. If fewer elements than the given number are available, then this number is obsolete. ' in: query required: false schema: type: integer default: 20 example: 20 - name: offset description: 'Specifying an offset will omit the first `n` elements in the result set where `n` is the number given to the offset query parameter. In combination with limiting and sorting, this enables pagination. ' in: query required: false schema: type: integer default: 0 example: 0 - name: includeCounts description: 'Enables calculation of the counts in the response metadata object. By default those aren''t calculated as it''s pretty expensive to do so and a lot of clients of this endpoint don''t need them. ' in: query required: false schema: type: boolean default: false example: false responses: '200': description: Systems returned. content: application/vnd.gridx.v2+json: schema: type: array items: allOf: - title: System description: "A System represents the logical view of one gateway and its appliances.\n\nFor example, a household can be represented as a system with a gateway such as a \ngridBox, and its connected appliances.\n" allOf: - title: System description: "A System represents the logical view of one gateway and its appliances.\n \nFor example, a household can be represented as a system with a gateway such as a \ngridBox, and its connected appliances.\n" type: object allOf: - title: System description: "A System represents the logical view of one gateway and its appliances.\n\nFor example, a household can be represented as a system with a gateway such as a \ngridBox, and its connected appliances.\n" properties: name: type: - string - 'null' maxLength: 200 description: Name of the System. example: gridX Headquarter solution: type: string description: "Represents the solution that the system uses:\n- HOME if the system is for a household. \n- CHARGE if the system is for charging station fleet management.\n" x-extensible-enum: - HOME - CHARGE - GENERAL - SMART_DISTRICT - MICROGRID - HOME_VIRTUAL_METERING - COMMERCIAL - CUSTOM_P2P x-readme-ref-name: SystemSolution priorities: description: Allows prioritisation of EMS functionalities by appliance type. Accepted values are ["BATTERY", "EV", "HEATPUMP", "HEATER"]. type: array items: type: string example: - EV - BATTERY appliancePriorities: type: array description: 'Allows prioritisation of EMS functionalities by appliance UUIDs. This option takes precendence over `priorities` field as it is more explicit. ' items: type: string format: uuid plan: description: "Charge plan of the system. Must be one of two possible options: \n * `2020_DLM_EVS_00` - Use this value for Dynamic Load Management.\n * `2020_SLM_EVS_00` - Use this value for Static Load Management.\n" type: string x-extensible-enum: - 2020_DLM_EVS_00 - 2020_SLM_EVS_00 x-readme-ref-name: SystemChargePlan operatingSince: type: string format: date-time description: Date since when the system is active in RFC3339 format. example: '2017-12-23T10:15:40Z' curtailmentStrategy: type: string deprecated: true description: "Deprecated: Only EQUALLY remains available and future implementations will likely use another field name.\nThe curtailment strategy describes how appliances shall be curtailed.\n * EQUALLY: Every appliance gets equally (fair) curtailed.\n" x-extensible-enum: - EQUALLY x-readme-ref-name: SystemCurtailmentStrategy location: title: Location description: Represents a GPS location with longitude and latitude. type: object allOf: - type: object properties: city: description: The city of the location. type: string example: Aachen country: description: The country of the location. type: string example: Germany addressLine1: description: 'First line of the location''s address, typically containing the main information such as the street name and house number. ' type: string example: Oppenhoffallee 143 addressLine2: description: 'Second line of the location''s address, typically containing additional information such as apartment numbers, suite numbers, or other details that can help in identifying the exact location of the address. ' type: string addressLine3: description: 'Third line of the location''s address, typically containing any other details that can help in identifying the exact location of the address. ' type: string addressLine4: description: 'Fourth line of the location''s address, typically containing any other details that can help in identifying the exact location of the address. ' type: string timeZone: description: The TZ Identifier of the location's timezone. type: string example: Europe/Berlin readOnly: true x-readme-ref-name: InventoryAbstractLocation - type: object properties: country: deprecated: true description: 'Deprecated - Instead of this freeform text field, use countryCode ' countryCode: type: string description: Country code in ISO 3166-1 alpha-2. example: DE enum: - AF - AX - AL - DZ - AS - AD - AO - AI - AQ - AG - AR - AM - AW - AU - AT - AZ - BS - BH - BD - BB - BY - BE - BZ - BJ - BM - BT - BO - BQ - BA - BW - BV - BR - IO - BN - BG - BF - BI - CV - KH - CM - CA - KY - CF - TD - CL - CN - CX - CC - CO - KM - CG - CD - CK - CR - CI - HR - CU - CW - CY - CZ - DK - DJ - DM - DO - EC - EG - SV - GQ - ER - EE - SZ - ET - FK - FO - FJ - FI - FR - GF - PF - TF - GA - GM - GE - DE - GH - GI - GR - GL - GD - GP - GU - GT - GG - GN - GW - GY - HT - HM - VA - HN - HK - HU - IS - IN - ID - IR - IQ - IE - IM - IL - IT - JM - JP - JE - JO - KZ - KE - KI - KP - KR - KW - KG - LA - LV - LB - LS - LR - LY - LI - LT - LU - MO - MG - MW - MY - MV - ML - MT - MH - MQ - MR - MU - YT - MX - FM - MD - MC - MN - ME - MS - MA - MZ - MM - NA - NR - NP - NL - NC - NZ - NI - NE - NG - NU - NF - MK - MP - 'NO' - OM - PK - PW - PS - PA - PG - PY - PE - PH - PN - PL - PT - PR - QA - RE - RO - RU - RW - BL - SH - KN - LC - MF - PM - VC - WS - SM - ST - SA - SN - RS - SC - SL - SG - SX - SK - SI - SB - SO - ZA - GS - SS - ES - LK - SD - SR - SJ - SE - CH - SY - TW - TJ - TZ - TH - TL - TG - TK - TO - TT - TN - TR - TM - TC - TV - UG - UA - AE - GB - US - UM - UY - UZ - VU - VE - VN - VG - VI - WF - EH - YE - ZM - ZW x-readme-ref-name: LocationCountryCode postalCode: description: The postal code of the location. type: string example: '52062' longitude: description: The geographic coordinate that specifies the east–west position of the location. type: number example: 6.09294299 readOnly: true latitude: description: The geographic coordinate that specifies the north–south position of the location. type: number example: 50.77441934 readOnly: true x-readme-ref-name: Location metadata: title: Metadata description: Represents system's metadata. type: object properties: wizard: title: Wizard type: object description: Represents the metadata to keep track of the current wizard step. required: - step properties: step: description: Represents the current wizard step. type: string x-extensible-enum: - WELCOME - STARTCODE - GRIDBOX_STATUS - SYSTEM_TYPE_SELECT - ACCOUNT_ASSIGNMENT - PERSONAL_INFORMATION - SYSTEM_OVERVIEW - SYSTEM_CHILDREN_SETUP - SYSTEM_SETUP - PARAGRAPH_14A - ENERGYMANAGEMENT - HEATING_ROD - ENERGYMANAGEMENT_ACTIVATION - ENERGY_SUPPLIER - SYSTEM_CHECK - DONE - ELECTRICITY_TARIFF_V2 - KOSTAL_CONFIGURATION - ENPHASE_CONNECTION - EEBUS_PAIRING - SONNEN_CONNECTION - IO_DEVICE_CONFIGURATION - IO_DEVICE_HEAT_PUMP_CONFIGURATION - TROUBLESHOOT_INSTALLATION - INSTALLER_HUB - ENA_G100 - PV_SYSTEM - FUSE_PROTECTION - ENERGY_OPTIMIZATION - UNKNOWN firstCompletedAt: description: Represents the date and time when the final wizard step was completed first time. type: string format: date-time readOnly: true example: '2025-06-22T00:00:00Z' version: description: Represents the version of wizard. type: integer x-extensible-enum: - 1 - 2 - 3 x-readme-ref-name: MetadataWizard energy: title: Energy Metadata type: object description: represents the metadata related to the energy use case. properties: installer: type: - string - 'null' description: Installer is the person who has installed the systems. norminalPower: type: - number - 'null' minimum: 0 description: 'The system''s maximal power production in W (for historical reasons the word "norminal" is used instead of the correct term "nominal power"). *Deprecated* - Use `nominalPower` instead (in mW!). ' deprecated: true nominalPower: type: - number - 'null' minimum: 0 description: The system's maximal power production in mW. 0 is used if unset. curtailment: type: - number - 'null' description: Curtailment is the percentage of system's nominal power at which the pv inverters should stop feeding into the grid. (0-1) heatingSystem: type: - string - 'null' description: HeatingSystem represents the type of the heating system. agreedEMSTerms: type: - boolean - 'null' deprecated: true description: 'AgreedEMSTerms indicates if the customers accepts the ems terms. *Deprecated* - Use `MetadataEMS.agreedEMSTerms` instead. ' ems: title: MetadataEMS type: object description: MetadataEMS represents the energy management allowances. properties: agreedEMSTerms: type: - boolean - 'null' description: AgreedEMSTerms indicates if the customers accepts the ems terms. enabledEMS: type: - boolean - 'null' description: EnabledEMS indicates if gridBox should activate the ems. agreedDynamicPVControlTerms: type: - boolean - 'null' description: AgreedDynamicPVControlTerms indicates if the customer accepts the dynamic pc control terms. enabledDynamicPVControl: type: - boolean - 'null' description: EnabledDynamicPVControl indicates if the gridBox should activate the dynamic pv control. enabledInverterGCPControl: type: - boolean - 'null' description: 'EnabledInverterGCPControl indicates if the gridBox should activate the inverter gcp control. *Deprecated* - This is automatically detected by the gridbox. If this field is unset or false, the gridbox will determine inverter GCP control activation automatically. ' deprecated: true agreedForecastBasedEMSTerms: type: - boolean - 'null' description: '*Deprecated* Feature is deprecated and will be removed in a future release. ' deprecated: true enabledForecastBasedEMS: type: - boolean - 'null' description: '*Deprecated* Feature is deprecated and will be removed in a future release. ' deprecated: true agreedPriorityConfigurationTerms: type: - boolean - 'null' description: AgreedPriorityConfigurationTerms indicates if the customer accepts the priority configuration terms. enabledPriorityConfiguration: type: - boolean - 'null' description: EnabledPriorityConfiguration indicates if the gridBox should activate the priority configuration. agreedPowerManagementTerms: type: - boolean - 'null' description: AgreedPowerManagementTerms indicates if the customer accepts the power management terms. enabledPowerManagement: type: - boolean - 'null' description: EnabledPowerManagement indicates if the gridBox should activate the power management. enabledStaticPowerManagement: type: - boolean - 'null' description: EnabledStaticPowerManagement indicates if the gridBox should activate the static power management. enabledPowerImportPeakOptimization: type: - boolean - 'null' description: EnabledPowerImportPeakOptimization indicates if the gridBox should activate the 15min avg. energy optimization algorithm. powerImportPeakPerOptimizationInterval: type: - number - 'null' format: double deprecated: true description: 'Describes the amount of imported energy in a 15 minutes interval in VA. Deprecated: Use powerImportPeakPerOptimizationIntervalmVA instead. ' powerImportPeakPerOptimizationIntervalmVA: type: - number - 'null' format: double description: Defines the average power in a 15 minute interval in mVA for peak shaving. enabledBatteryFullGridCharge: type: - boolean - 'null' description: '*Deprecated* Feature is deprecated and will be removed in a future release. The default behaviour is to always allow charging with full power and the setting is not required anymore. ' deprecated: true enabledLessConstrainingSOCLimits: type: - boolean - 'null' description: '*Deprecated* Feature is deprecated and will be removed in a future release. ' deprecated: true derAPISettings: title: DerAPISettings type: object description: DerAPISettings represents the metadata related to DER API configuration. properties: enabledCloudAPI: type: - boolean - 'null' description: EnabledCloudAPI enables assets control with cloud DER API. constraints: title: SyncEntitySettings type: object description: SyncEntitySettings configures entity synchronisation parameters. properties: syncInterval: type: - number - 'null' format: double description: SyncInterval defines the period in seconds for data to be synchronized between gridBox and cloud DER API. ttl: type: - number - 'null' format: double description: TTL defines the time to live in seconds for entity. disabled: type: boolean description: Disabled disables the sync of entities. x-readme-ref-name: SyncEntitySettings flexibilities: title: SyncEntitySettings type: object description: SyncEntitySettings configures entity synchronisation parameters. properties: syncInterval: type: - number - 'null' format: double description: SyncInterval defines the period in seconds for data to be synchronized between gridBox and cloud DER API. ttl: type: - number - 'null' format: double description: TTL defines the time to live in seconds for entity. disabled: type: boolean description: Disabled disables the sync of entities. x-readme-ref-name: SyncEntitySettings x-readme-ref-name: DerAPISettings enabledTimeOfUseOptimization: deprecated: true type: - boolean - 'null' description: 'Indicates if time of use optimization is enabled for the system. *Deprecated* - Use `systems/{systemID}/timeofuse/options` endpoint instead. ' disableAveragePmaxCalculation: type: - boolean - 'null' description: Disables the average pMax calculation. It means EMS will not calculate average pMax and will get the default value instead. excludeApplianceTypes: description: Appliance types to be ignored by the EMS. Updating this field to an empty array clears it. **Please note that this currently requires the box to be restarted to take effect**. type: - array - 'null' items: type: string x-extensible-enum: - HEAT_PUMP evChargingReallocationTolerance: description: Specifies the maximum power in mW that can be drawn to charge an EV in case the PV surplus is not sufficient. type: - number - 'null' format: double example: 500000 enabledPowerWindowHysteresis: description: Configures the system to use the power window hysteresis feature. If unset, the system will behave as if this was activated. Set to false to deactivate. type: - boolean - 'null' x-readme-ref-name: MetadataEMS smartMeterInstallationTimestamp: description: The time the smart meter has been installed (if any), in RFC3339 format. type: - string - 'null' format: date-time example: '2020-09-21T00:00:00Z' x-readme-ref-name: MetadataEnergy energySupplier: title: Energy Supplier type: object description: MetadataEnergySupplier represents the metadata related to energy supplier. properties: type: type: - string - 'null' deprecated: true description: Type determines if gridX is the energy supplier. The value is either "GRIDX" or "OTHER". enum: - GRIDX - OTHER unitPrice: type: - number - 'null' description: UnitPrice is unit price per kWh in EU cent. Deprecated - Use TariffV2 instead. deprecated: true installment: type: - number - 'null' description: Installment is the monthly payment. baseFee: type: - number - 'null' description: BaseFee is the monthly base fee. feedInTariff: type: - number - 'null' description: FeedInTariff is the cost-based compensation in EUR cent for feeding in. Deprecated - Use TariffV2 instead. deprecated: true expectedConsumption: type: - number - 'null' description: ExpectedConsumption is the expected annual consumption in kWh. x-readme-ref-name: MetadataEnergySupplier smartMeter: title: Smart Meter description: Represents the metadata to report if a smart meter has been installed. type: object properties: installed: type: - boolean - 'null' description: Reports if the smart meter has been installed. hasInstallationDate: type: - boolean - 'null' description: Reports if the provider has sent us a installation date that can be found in energy metadata. x-readme-ref-name: MetadataSmartMeter x-readme-ref-name: SystemMetadata x-readme-ref-name: AbstractSystem - properties: id: type: string format: uuid readOnly: true description: Unique identifier of a system. example: aa3e5a93-bb38-4b15-b7f2-af40daf3a1dc createdAt: type: string format: date-time readOnly: true description: Date when the system was created in RFC3339 format. example: '2017-12-22T14:20:50Z' updatedAt: type: string format: date-time readOnly: true description: Date when the system was last updated in RFC3339 format. example: '2017-12-24T08:33:00Z' chargingIntervals: type: array readOnly: true description: Displays charging intervals of the system's EV charging stations. items: title: EV Charging Schedule type: object allOf: - title: EV Charging Schedule description: 'An Electric Vehicle charging schedule represents an interval in which the electric vehicle is supposed to charge at a defined limit. ' type: object properties: from: type: string format: date-time example: '2021-11-04T00:00:00Z' description: 'Specifies when the schedule should start in RFC3339 format. ' to: type: string format: date-time example: '2021-11-04T00:30:00Z' description: 'Specifies when the schedule should end in RFC3339 format. ' limit: description: 'The maximum amount of power in Watts that will be used for scheduling charging in the interval [from, to]. ' example: 75000 title: Positive Power in Watt. type: integer format: int64 minimum: 0 x-readme-ref-name: PositivePower x-readme-ref-name: AbstractEVChargingSchedule - properties: id: type: string format: uuid example: ec4d0c89-a604-49ac-82f0-427f9cb42204 readOnly: true updatedAt: type: string format: date-time readOnly: true description: Specifies when the schedule was updated the last time. - required: - id - from - to - limit x-readme-ref-name: EVChargingSchedule gateways: description: The gateways of which this system is comprised. type: array readOnly: true items: allOf: - title: Gateway description: 'A gateway used to monitor and control appliances. For instance, our beloved gridbox is a gateway. ' type: object properties: name: deprecated: true type: string maxLength: 255 description: Name of the gateway. debugModeUntil: deprecated: true type: string format: date-time description: 'Date until which debug messages are logged in RFC3339 format. **Deprecated**: defaults to `createdAt` + 3 days. ' x-readme-ref-name: AbstractGateway - properties: id: type: string format: uuid example: 6dd0a658-5828-4d30-bc65-a03c6d6e425f description: Unique identifier of a gateway. readOnly: true type: type: string description: 'Type of the gateway. **Deprecated** - Non-physical gateways will no longer be supported from 01.03.2024. This field will consequently be removed. ' deprecated: true enum: - VIRTUAL - PHYSICAL - OTHER x-readme-ref-name: GatewayType createdAt: type: string format: date-time readOnly: true description: Date when the Gateway was created in RFC3339 format. updatedAt: type: string format: date-time readOnly: true description: Date when the Gateway was last updated in RFC3339 format. registeredAt: deprecated: true type: string format: date-time readOnly: true description: 'Date when the Gateway was first registered in RFC3339 format. **Deprecated**: defaults to `createdAt`. ' connectionStatus: title: Connection Status type: object readOnly: true properties: status: type: string description: "Indicates the connection status. Is one of:\n * `AVAILABLE`: Gateway has sent data in the last 5 minutes\n * `TEMPORARILY_UNAVAILABLE`: Gateway has not sent data in the last 5 minutes\n * `UNAVAILABLE`: Gateway has not sent data in the last 24 hours\n * `UNKNOWN`: Gateway was never online and never sent data or the connection status can't be determined." enum: - AVAILABLE - TEMPORARILY_UNAVAILABLE - UNAVAILABLE - UNKNOWN contactedAt: type: string format: date-time deprecated: true description: 'When the gateway/appliance has last contacted the gridX cloud. In case the gateway was never online and never sent data, this field is null. Deprecated: Gateway heartbeats will be removed in future versions and this will be only estimated. Use `statusChangedAt` instead. ' statusChangedAt: type: string format: date-time description: 'When the gateway status last changed. In case the gateway was never online this field is null. ' required: - status x-readme-ref-name: ConnectionStatus vendorID: deprecated: true description: 'ID of the vendor account to which the corresponding system is assigned. **Deprecated**: omitted from responses by default. ' type: string format: uuid example: 6dd0a658-5828-4d30-bc65-a03c6d6e425f startcode: description: Code used to register a new gateway. type: string example: 39FDDF7D85BAAD2D manufacturer: deprecated: true description: 'Manufacturer of the gateway. **Deprecated**: defaults to `gridX`. ' type: string example: gridX readOnly: true model: description: Model of the gateway. type: string example: 2.00P-X readOnly: true serialnumber: description: Serial number of the gateway. type: string example: C083-200-000-000-199-P-X readOnly: true additionalIdentifiers: description: Additional identifiers used by the gateway. type: array items: title: Additional identifiers of the gridBox. description: Additional identifiers used by the gridBox. type: object properties: service: type: string readOnly: true description: The service this identifier is referring to, e.g the protocol used for the appliance-gridBox handshake example: EEBUS type: type: string readOnly: true description: The type of the identifier. example: SKI enum: - UNKNOWN - SKI identifier: type: string readOnly: true description: The actual identifier, e.g "SKI" used in the TLS certificate for the communication. If type is "SKI", it is hexadecimal-encoded. x-readme-ref-name: AdditionalIdentifier readOnly: true scanners: type: array readOnly: true description: List of scanner names that are enabled for this gateway. items: type: string description: The name of the scanner which searches for the appliance in the network. example: SMA_INVERTER_IGMP_HOST_DISCOVERY x-extensible-enum: - SMA_INVERTER_IGMP_HOST_DISCOVERY - SMA_INVERTER_ARP_HOST_DISCOVERY - SMA_METER - BCONTROL_METER - SOLAREDGE_INVERTER_METER_MODBUS_TCP - SOLAREDGE_INVERTER_METER_MODBUS_RTU - SOLARLOG_MONITOR - CUSTOMER_HOLFELDER_METER - CUSTOMER_HOLFELDER_INVERTER - E3DC_INVERTER_METER - KOSTAL_INVERTER - STUDER_INVERTER - FRONIUS_INVERTER - HUAWEI_INVERTER - KEBA_CHARGING_STATION - ECHARGE_CHARGING_STATION - INNOGY_CHARGING_STATION - ELECTRIS_METER - SOLARWATT_INVERTER_METER - ABL_CHARGING_STATION - SIEMENS_PAC_METER - JANITZA_METER - JANITZA_METER_RTU - EVTEC_CHARGING_STATION - HIKING_METER_RTU - EEBUS_FUEL_CELL_METER - KOSTAL_INVERTER_PLENTICORE - SONNENBATTERIE_UPNP - VIRTUAL_METER - MENNEKES_UPNP - ANYBUS_MBUS_CONVERTER_METER - EEBUS_GENERIC - SIMULATION_GENERIC - ALFEN_NG9XX_MODBUS_CHARGING_STATION - ALPITRONIC_HYPERCHARGER_MODBUS_CHARGING_STATION - MY_PV_AC_THOR_HEATER - COMPLEO_MODBUS_CHARGING_STATION - OCPP_CHARGING_STATION - BENDER_CHARGING_STATION - VOLTERION_REDOX_FLOW_BATTERY - XNET_METER - RSW_METER - SCHNEIDER_METER - INNOGY_MODBUS_CHARGING_STATION - MENNEKES_PREMIUM_MODBUS_CHARGING_STATION - PLPLANO_MODBUS_RTU_METER - HEIDELBERG_ENERGY_CONTROL_MODBUS_RTU_CHARGING_STATION - CARLO_GAVAZZI_MODBUS_RTU_METER - VESTEL_CHARGING_STATION - INNOTEC_HEAT_PUMP - WALLBE_MODBUS_CHARGING_STATION - EVBOX_MAX_CHARGING_STATION - ISKRAEMECO_METER - SUNGROW_MODBUS_INVERTER - WAGO_IO_DEVICE - GOE_CHARGING_STATION - XNET_CLOUD_HEAT_PUMP - XNET_CLOUD_GENERIC - LANDIS_GYR_METER - POWERDALE_CHARGING_STATION - EASTRON_SDM230_METER - EASTRON_SDM72DM_METER - ZUCCHETTI_CONNEXT_BOX - PLVARIO_ENERGY_METER_EM3 - ABB_OPC_UA_CHARGING_STATION - DATA_LOGGER_DEVICE - POWERSIDE_METER - PPC_METER - RUTENBECK_TCR_IP4_IO_DEVICE - JEAN_MUELLER_PL_MULTI_METER - ENPHASE_ENVOY_S_GATEWAY - SOLAX_MODBUS_RTU_INVERTER - ALPHA_ESS_HI10_HYBRID_INVERTER - ZUCCHETTI_MODBUS_RTU_INVERTER - STIEBEL_ELTRON_MODBUS_TCP_HEAT_PUMP - MENNEKES_AMTRON_COMPACT_2S_MODBUS_RTU_CHARGING_STATION - SAIA_PCD1_E_LINE_HEAT_PUMP - SUNGROW_SG_MODBUS_INVERTER - SOLAX_MODBUS_TCP_INVERTER - PHOENIX_CONTACT_EM_PRO_METER - DAIKIN_HOMEHUB_MODBUS_TCP_HEAT_PUMP - SOLPLANET_MODBUS_TCP_INVERTER - SUNGROW_SHXRS_SHXT_MODBUS_INVERTER - KOSTAD_DC_CHARGING_STATION - GIVENERGY_GIV_TCP_INVERTER - FOX_ESS_MODBUS_TCP_INVERTER - SHELLY_HTTP_METER - PIXII_MODBUS_TCP_BESS - GOODWE_MODBUS_TCP_INVERTER - READY_FOR_GRIDX - KOSTAL_ENECTOR_CHARGING_STATION - MENNEKES_4YOU_CHARGING_STATION - EKOENERGETYKA_CHARGING_STATION - VIESSMANN_EEBUS_INVERTER_AND_HEAT_PUMP - VAILLANT_EEBUS_HEAT_PUMP - PROLAN_EEBUS_STB - PPC_EEBUS_METER - THEBEN_SE_EEBUS_METER - DAIKIN_ALTHERMA4_MODBUS_TCP_HEAT_PUMP - FOXESS_CHARGING_STATION - BOSCH_BUDERUS_EEBUS_HEAT_PUMP - KOSTAL_EBOX_DC_B11_EEBUS_CHARGING_STATION - SOLPLANET_IBC_SOLAR_CHARGING_STATION - ADS_TEC_CHARGING_STATION - WOLF_EEBUS_HEAT_PUMP - SHELLY_3EMPRO_HTTP_METER - SHELLY_PRO2_HTTP_IO_DEVICE - SWISTEC_EEBUS_METER - BMW_DC_WALLBOX_EEBUS_CHARGING_STATION - SUNGROW_CHARGING_STATION - ETREL_INCH_DUO_CHARGING_STATION - ALPHAESS_SMILE_G3_T4_T10 - SUNGROW_EMS300CP_BESS - HUAWEI_SMART_LOGGER_BESS - SOLAX_MODBUS_TCP_METER x-readme-ref-name: ScannerName applianceComposition: type: array readOnly: true description: Appliance types that are connected to the gateway for overview purposes. example: - HEAT_PUMP items: type: string required: - id - type - connectionStatus - createdAt - updatedAt x-readme-ref-name: Gateway status: type: string readOnly: true deprecated: true enum: - UNDEFINED - OK - WARNING - ERROR description: "Status of the system: \n * `OK`: If the attached gateway is reported as ONLINE.\n * `WARNING`: If the attached gateway is reported as OFFLINE but less than 24h ago.\n * `ERROR`: If the attached gateway is reported as OFFLINE for more than 24h ago. \n * `UNDEFINED`: otherwise\n\n**Deprecated** - Use `gatewayStatus` instead.\n" gatewayStatus: type: string readOnly: true description: "Status of the system's gateway: \n * `AVAILABLE` - The gateway is reported as ONLINE.\n * `UNAVAILABLE` - The gateway is reported as OFFLINE.\n * `UNKNOWN` - The system has no gateway, or the gateway status is not known.\n\nIf you need more granularity, you can use the `connectionStatus` in `gateways` instead.\n" enum: - AVAILABLE - UNAVAILABLE - UNKNOWN assetsStatus: type: object readOnly: true description: 'Provides information about the system''s health, such as the computed combined status of all of its assets as well as their respective counts. Only included in the response if filtered by using the `filterBy` parameter, or included via the `include` parameter. ' properties: status: type: string description: 'The combined status of all of this system''s assets according to the following rules: AVAILABLE → All the assets are successfully connected in the last 5 minutes. UNHEALTHY → Only some assets are successfully connected in the last 5 minutes. UNAVAILABLE → No assets are successfully connected in the last 5 minutes. UNKNOWN → Fallback, e.g. system without assets or all assets have an unknown status. ' enum: - UNKNOWN - UNAVAILABLE - UNHEALTHY - AVAILABLE unknownCount: readOnly: true description: 'The total number of assets for which there is no status information. ' type: integer example: 321 unavailableCount: readOnly: true description: 'The total number of assets which have connected in the past but not in the past 5 minutes. ' type: integer example: 321 availableCount: readOnly: true description: 'The total number of assets which have connected in the past 5 minutes. ' type: integer example: 321 assetsKinds: type: array readOnly: true description: 'Provides information about the distinct kinds of assets attached to a system. Only included in the response if filtered by using the `filterBy` parameter, or included via the `include` parameter. ' items: type: string x-extensible-enum: - AIR_CONDITIONER - BATTERY - BTTP - CLUSTER - EV - EVSTATION - FUEL_CELL - GRID - HEAT_PUMP - HEAT_PUMP_EXTERNAL - HEATER - HEATING - HYBRID - IO_DEVICE - MISC - PV - PV_EXTERNAL - UNKNOWN - WIND_TURBINE assetsGatewayType: type: string readOnly: true description: 'Provides information about the gateway type of assets attached to a system. Returns HYBRID when both CLOUD and GRIDBOX assets are present. Omitted when the system has no assets. Only included in the response if filtered by using the `filterBy` parameter, or included via the `include` parameter. ' enum: - CLOUD - GRIDBOX - HYBRID tags: type: array readOnly: true description: 'Provides information about the distinct tags attached to a system. Only included in the response if filtered by using the `filterBy` parameter, or included via the `include` parameter. ' items: type: object properties: name: type: string value: type: string x-readme-ref-name: SystemWithoutProductOption - title: Embedded accounts description: 'Hierarchy of accounts the system belongs to, from the authenticated account down to the end customer''s. ' type: object properties: accounts: type: array items: title: Account description: 'An account describes an organizational unit to manage access to systems for one or multiple users. ' type: object readOnly: true allOf: - title: Account description: 'An account describes an organizational unit to manage access to systems for one or multiple users. This is the base type for the more concrete usages and not used directly within operations. ' type: object properties: name: type: string example: John Doe description: Name of the account, can be chosen freely but should be kept terse and descriptive. minLength: 1 maxLength: 256 email: type: string example: john@doe.com description: The email field of the account can optionally be chosen e.g. for contact purposes (in order to reach the responsible person for the account). maxLength: 256 solution: type: string description: 'Represents the supported solutions within the account: - HOME if the account contains household-like systems. - CHARGE if the account is used solely for charging station fleet management. - GENERAL if unsure what the account should contain or if it''s a mix of multiple solutions. - SMART_DISTRICT if the account is used solely for smart district management. If not set, the parent account''s solution will be assumed. ' enum: - HOME - CHARGE - GENERAL - SMART_DISTRICT - MICROGRID - HOME_VIRTUAL_METERING - COMMERCIAL - CUSTOM_P2P x-readme-ref-name: InventoryAccountSolution x-readme-ref-name: InventoryAbstractAccount - properties: id: type: string format: uuid example: 49a4f165-8233-426b-a1a4-e569665a25dd description: Uniquely identifies the account. parentID: type: string format: uuid example: 19a4f165-8233-426b-a1a4-e569665a25dd description: Parent of the account for a tree-like account structure. Only the root account does not have a parent ID. createdAt: type: string format: date-time description: Specifies when the account was created. updatedAt: type: string format: date-time description: Specifies when the account was updated. systemsCount: type: integer description: SystemCount is the number of systems assigned to this account example: 1 kind: type: string readOnly: true enum: - b2b - end-user description: If b2b, the account is a regular account. If end-user, the account is a customer account which contains just one user. x-readme-ref-name: AccountKind mainAddress: title: Address description: Represents a physical address of a customer. allOf: - type: object properties: city: description: The city of the location. type: string example: Aachen country: description: The country of the location. type: string example: Germany addressLine1: description: 'First line of the location''s address, typically containing the main information such as the street name and house number. ' type: string example: Oppenhoffallee 143 addressLine2: description: 'Second line of the location''s address, typically containing additional information such as apartment numbers, suite numbers, or other details that can help in identifying the exact location of the address. ' type: string addressLine3: description: 'Third line of the location''s address, typically containing any other details that can help in identifying the exact location of the address. ' type: string addressLine4: description: 'Fourth line of the location''s address, typically containing any other details that can help in identifying the exact location of the address. ' type: string timeZone: description: The TZ Identifier of the location's timezone. type: string example: Europe/Berlin readOnly: true x-readme-ref-name: InventoryAbstractLocation - type: object properties: postalcode: description: The postal code of the location. type: string example: '52062' region: description: The region of the address. type: string telephone: description: The telephone number of the customer. type: string x-readme-ref-name: InventoryAddress customization: description: Customization can be used to store arbitrary data. required: - id - createdAt - updatedAt x-readme-ref-name: InventoryAccount readOnly: true x-readme-ref-name: EmbeddedAccounts - properties: productOption: type: object allOf: - title: Product Option description: 'A product option describes a set of features whose access should be restricted from or granted to users of a system. Systems can be assigned a product option to manage their access to these features. This is the base type for the more concrete usages and not used directly within operations. ' type: object properties: name: type: string description: Name of the product option. example: Default Product Option description: type: string description: Describes the purpose of the product option. x-readme-ref-name: AbstractProductOption - properties: id: description: Unique identifier of the product option. type: string format: uuid example: d5166f02-8b56-4200-90bd-35d3d17391b4 accountID: description: Unique identifier of the account that owns the product option. type: string format: uuid example: d73b6749-2c32-4bca-ab73-50d8e3744edf isDefault: type: boolean description: Indicates whether the product option should be assigned by default to all systems of the owning account. functionalities: description: The default functionalities that a product option restricts access to. Deprecated - Use `showFunctionalities` and `hideFunctionalities` instead. type: array readOnly: true deprecated: true items: type: object allOf: - description: 'A product functionality describes a feature. It is used to manage access to this feature via product options. This is the base type for the more concrete usages and not used directly within operations. ' type: object properties: name: type: string maxLength: 256 description: Name of the product functionality. example: EV Manager hide: type: boolean description: Indicates whether the product functionality should be hidden or shown. description: type: string description: Describes the purpose of the product functionality. x-readme-ref-name: AbstractProductFunctionality - properties: id: description: Unique identifier of the product functionality. type: string format: uuid example: 4e3392ce-ed94-4946-8a11-665e0443723e required: - id - name - hide x-readme-ref-name: ProductFunctionality hideFunctionalities: readOnly: true description: The default functionalities that a product option restricts access to. Must be of type `hide=true`. type: array items: type: object allOf: - description: 'A product functionality describes a feature. It is used to manage access to this feature via product options. This is the base type for the more concrete usages and not used directly within operations. ' type: object properties: name: type: string maxLength: 256 description: Name of the product functionality. example: EV Manager hide: type: boolean description: Indicates whether the product functionality should be hidden or shown. description: type: string description: Describes the purpose of the product functionality. x-readme-ref-name: AbstractProductFunctionality - properties: id: description: Unique identifier of the product functionality. type: string format: uuid example: 4e3392ce-ed94-4946-8a11-665e0443723e required: - id - name - hide x-readme-ref-name: ProductFunctionality showFunctionalities: readOnly: true description: The extra functionalities that a product option grants access to. Must be of type `hide=false`. type: array items: type: object allOf: - description: 'A product functionality describes a feature. It is used to manage access to this feature via product options. This is the base type for the more concrete usages and not used directly within operations. ' type: object properties: name: type: string maxLength: 256 description: Name of the product functionality. example: EV Manager hide: type: boolean description: Indicates whether the product functionality should be hidden or shown. description: type: string description: Describes the purpose of the product functionality. x-readme-ref-name: AbstractProductFunctionality - properties: id: description: Unique identifier of the product functionality. type: string format: uuid example: 4e3392ce-ed94-4946-8a11-665e0443723e required: - id - name - hide x-readme-ref-name: ProductFunctionality required: - id - accountID - name - isDefault - functionalities - hideFunctionalities - showFunctionalities x-readme-ref-name: ProductOption productOptionUpdatedAt: description: Time at which the system's product option was last changed in RFC3339 format. type: string format: date-time readOnly: true example: '2009-11-10T23:20:50Z' required: - id - name - createdAt - updatedAt x-readme-ref-name: System - properties: users: description: 'The users belonging to this system. Only set if `embed` query parameter includes `user`. ' type: array readOnly: true items: type: object properties: id: description: Unique identifier of the user. type: string format: uuid example: 43a4f165-8233-426b-a1a4-e569665a25dd readOnly: true accountID: description: Unique identifier of the account that the user belongs to. type: string format: uuid example: 6dd0a658-5828-4d30-bc65-a03c6d6e425f readOnly: true newPassword: description: Used to set a new password for the user. type: string writeOnly: true loginsCount: description: Number of user logins. type: integer readOnly: true mfaEnabled: description: Indicates whether MFA (Multi-Factor Authentication) is enabled. type: boolean readOnly: true mfaReset: description: Can be set to true if MFA (Multi-Factor Authentication) needs to to be reset. This will remove the MFA. type: boolean writeOnly: true createdAt: description: Time at which the user was created in UTC using the RFC3339 format. type: string format: date-time example: '2009-11-10T23:20:50Z' readOnly: true updatedAt: description: Time at which the user was last updated in UTC using the RFC3339 format. type: string format: date-time example: '2009-11-10T23:20:50Z' readOnly: true fullName: description: Full name of the user typically consisting of first name and last name. type: string example: John Doe email: description: The email address of the user that is used for login. type: string format: email example: john@doe.com groups: description: Policy groups attached to this user which determine the effective permissions through policies. type: array items: title: Policy Group type: object allOf: - title: Policy Group description: 'A policy group describes the permissions of a group. This is the base type for the more concrete usages and not used directly within operations. ' type: object properties: name: type: string description: Name of the policy group. example: group name description: type: string description: Description of the group, omitted if empty example: Group provides read-access to accounts x-readme-ref-name: AbstractPolicyGroup - properties: id: type: string format: uuid description: Unique identifier of the policy group. example: 97874c1b-d073-4b06-bf01-a1497fbe1146 readOnly: true accountID: type: string format: uuid description: Unique identifier of the creator account. example: 97874c1b-d073-4b06-bf01-a1497fbe1146 readOnly: true createdAt: description: Time at which the policy group was created in UTC (RFC 3339 format). type: string format: date-time example: '2019-11-06T15:33:00Z' readOnly: true updatedAt: description: Time at which the policy group was last updated in UTC (RFC 3339 format). type: string format: date-time example: '2019-11-08T23:20:50Z' readOnly: true userCount: type: integer description: Amount of users that are in this group. example: 10 readOnly: true required: - id - name - accountID - createdAt - updatedAt x-readme-ref-name: PolicyGroup mainAddress: title: Address description: Represents a physical address of a customer. allOf: - type: object properties: city: description: The city of the location. type: string example: Aachen country: description: The country of the location. type: string example: Germany addressLine1: description: 'First line of the location''s address, typically containing the main information such as the street name and house number. ' type: string example: Oppenhoffallee 143 addressLine2: description: 'Second line of the location''s address, typically containing additional information such as apartment numbers, suite numbers, or other details that can help in identifying the exact location of the address. ' type: string addressLine3: description: 'Third line of the location''s address, typically containing any other details that can help in identifying the exact location of the address. ' type: string addressLine4: description: 'Fourth line of the location''s address, typically containing any other details that can help in identifying the exact location of the address. ' type: string timeZone: description: The TZ Identifier of the location's timezone. type: string example: Europe/Berlin readOnly: true x-readme-ref-name: InventoryAbstractLocation - type: object properties: postalcode: description: The postal code of the location. type: string example: '52062' region: description: The region of the address. type: string telephone: description: The telephone number of the customer. type: string x-readme-ref-name: InventoryAddress language: title: Language description: The language information of the user. type: object required: - tag - name - nameNative properties: tag: type: string description: 'Tag is the IETF language tag''s primary identifier for this language. See [here](https://tools.ietf.org/rfc/bcp/bcp47.txt) and the example below for more information. ' example: de_DE name: type: string description: The name of the language in English. example: German readOnly: true nameNative: type: string description: The name of the language in the language itself. example: Deutsch readOnly: true x-readme-ref-name: SystemUserLanguage required: - auth - id - email - createdAt - updatedAt x-readme-ref-name: SystemUser x-readme-ref-name: SystemWithUsers '403': description: Forbidden. content: application/vnd.gridx.v2+json: schema: readOnly: true allOf: - title: General Exception description: Represents a general error structure returned by our REST API. type: object properties: message: type: string description: Message represents the message reported to the user. details: type: array description: 'Details represents detail information for the user to fix this problem ' items: type: string required: - message x-readme-ref-name: GeneralException - title: UnauthorizedError - Forbidden Error description: Forbidden Error example: message: Bad credentials x-readme-ref-name: ForbiddenException '422': description: Validation failed. content: application/vnd.gridx.v2+json: schema: readOnly: true allOf: - title: General Exception description: Represents a general error structure returned by our REST API. type: object properties: message: type: string description: Message represents the message reported to the user. details: type: array description: 'Details represents detail information for the user to fix this problem ' items: type: string required: - message x-readme-ref-name: GeneralException - title: ClientError - Validation description: 'Validation indicates that the request body contains fields which does not pass the validation. ' type: object required: - message - details example: message: Validation failed details: - email is not valid x-readme-ref-name: InvalidException '500': description: There has been an internal error on our side. We're looking into it. content: application/vnd.gridx.v2+json: schema: readOnly: true allOf: - title: General Exception description: Represents a general error structure returned by our REST API. type: object properties: message: type: string description: Message represents the message reported to the user. details: type: array description: 'Details represents detail information for the user to fix this problem ' items: type: string required: - message x-readme-ref-name: GeneralException - title: ServerSideError - Internal Server Error description: Internal Server Error example: message: Internal Server Error x-readme-ref-name: InternalException security: - HeaderAuth: - SystemsRead x-code-samples: - lang: python label: Python source: 'import requests url = "https://api.gridx.de/accounts/accountID/systems" headers = {"accept": "application/vnd.gridx.v2+json"} response = requests.get(url, headers=headers) print(response.text)' - lang: shell label: Shell source: "curl --request GET \\\n --url https://api.gridx.de/accounts/accountID/systems \\\n --header 'accept: application/vnd.gridx.v2+json'" - lang: go label: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io\"\n)\n\nfunc main() {\n\n\turl := \"https://api.gridx.de/accounts/accountID/systems\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"accept\", \"application/vnd.gridx.v2+json\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := io.ReadAll(res.Body)\n\n\tfmt.Println(string(body))\n\n}" - lang: javascript label: Javascript source: "const options = {method: 'GET', headers: {accept: 'application/vnd.gridx.v2+json'}};\n\nfetch('https://api.gridx.de/accounts/accountID/systems', options)\n .then(res => res.json())\n .then(res => console.log(res))\n .catch(err => console.error(err));" - lang: java label: Java source: "OkHttpClient client = new OkHttpClient();\n\nRequest request = new Request.Builder()\n .url(\"https://api.gridx.de/accounts/accountID/systems\")\n .get()\n .addHeader(\"accept\", \"application/vnd.gridx.v2+json\")\n .build();\n\nResponse response = client.newCall(request).execute();" - lang: java label: Kotlin source: "val client = OkHttpClient()\n\nval request = Request.Builder()\n .url(\"https://api.gridx.de/accounts/accountID/systems\")\n .get()\n .addHeader(\"accept\", \"application/vnd.gridx.v2+json\")\n .build()\n\nval response = client.newCall(request).execute()" - lang: javascript label: Swift source: 'import Foundation let url = URL(string: "https://api.gridx.de/accounts/accountID/systems")! var request = URLRequest(url: url) request.httpMethod = "GET" request.timeoutInterval = 10 request.allHTTPHeaderFields = ["accept": "application/vnd.gridx.v2+json"] let (data, _) = try await URLSession.shared.data(for: request) print(String(decoding: data, as: UTF8.self))' - lang: csharp label: C# source: 'using RestSharp; var options = new RestClientOptions("https://api.gridx.de/accounts/accountID/systems"); var client = new RestClient(options); var request = new RestRequest(""); request.AddHeader("accept", "application/vnd.gridx.v2+json"); var response = await client.GetAsync(request); Console.WriteLine("{0}", response.Content); ' post: operationId: assignSystemToAccount summary: Assign a System to an Account description: 'Assigning a (list of) system(s) to an account grants that account and its parents access to the system(s). If the account or one of its children already has access to the system, this operation is a no-op. It will give a successful response, but nothing is done. If the account is an end-user: - If the system is unassigned (for example after it has been created), it is moved under the end-user account''s b2b parent. - If the system is already assigned, the end-user is assigned and moved under the system''s lowest currently assigned b2b account. If the account is a b2b: - The system gets assigned to the account, and any currently assigned end-user accounts are moved under it. It is not possible to: - Move a system with end-users to a b2b account in a different audience. Any end-users must first be deleted. - Assign an end-user to a system currently assigned to a b2b account in a different audience. When a system gets assigned to a different b2b account, its product option may be unassigned if it is no longer reachable from the newly assigned account. If the newly assigned account has any default product options, they will be assigned, unless the system was already assigned to a product option which is still valid (reachable) after the move.' tags: - System parameters: - name: accountID description: 'Unique identifier used to access an account. ' in: path required: true schema: type: string format: uuid example: 17874c1b-d073-4b06-bf01-a1497fbe1142 requestBody: description: Assign a system (and its customers) to an account. required: true content: application/json: schema: allOf: - title: System-Account assignment type: object required: - uuids properties: moveSystemsAndCustomers: description: '**Deprecated** - This parameter no longer carries any logic - the behavior is `true` by default, even if `false` is set in the body. - `true`: Moves the system from the origin account to the target account (accountID parameter) and its parent accounts. The customers that belong to that account are also moved to the target account. - `false`: Assigns the system to the target account (accountID parameter) and its parent accounts. ' type: boolean deprecated: true default: true moveVendorID: description: "**Deprecated** - This parameter no longer carries any logic - the behavior is `true` by default, even if `false` is set in the body.\n\n - `true`: Updates the vendorID of the gateway of the specified system to the target accountID.\n - `false`: Does not update the vendorID of the gateway of the specified system.\n" type: boolean deprecated: true default: true uuids: description: System IDs that will be moved to the target account. It can include up to 150 System IDs. type: array maxItems: 150 items: type: string example: aa3e5a93-bb38-4b15-b7f2-af40daf3a1dc x-readme-ref-name: SystemAccountAssignment - additionalProperties: false x-readme-ref-name: SystemAccountAssignmentStrict responses: '200': description: System assigned to account. content: application/vnd.gridx.v2+json: schema: title: Account description: 'An account describes an organizational unit to manage access to systems for one or multiple users. ' type: object readOnly: true allOf: - title: Account description: 'An account describes an organizational unit to manage access to systems for one or multiple users. This is the base type for the more concrete usages and not used directly within operations. ' type: object properties: name: type: string example: John Doe description: Name of the account, can be chosen freely but should be kept terse and descriptive. minLength: 1 maxLength: 256 email: type: string example: john@doe.com description: The email field of the account can optionally be chosen e.g. for contact purposes (in order to reach the responsible person for the account). maxLength: 256 solution: type: string description: 'Represents the supported solutions within the account: - HOME if the account contains household-like systems. - CHARGE if the account is used solely for charging station fleet management. - GENERAL if unsure what the account should contain or if it''s a mix of multiple solutions. - SMART_DISTRICT if the account is used solely for smart district management. If not set, the parent account''s solution will be assumed. ' enum: - HOME - CHARGE - GENERAL - SMART_DISTRICT - MICROGRID - HOME_VIRTUAL_METERING - COMMERCIAL - CUSTOM_P2P x-readme-ref-name: InventoryAccountSolution x-readme-ref-name: InventoryAbstractAccount - properties: id: type: string format: uuid example: 49a4f165-8233-426b-a1a4-e569665a25dd description: Uniquely identifies the account. parentID: type: string format: uuid example: 19a4f165-8233-426b-a1a4-e569665a25dd description: Parent of the account for a tree-like account structure. Only the root account does not have a parent ID. createdAt: type: string format: date-time description: Specifies when the account was created. updatedAt: type: string format: date-time description: Specifies when the account was updated. systemsCount: type: integer description: SystemCount is the number of systems assigned to this account example: 1 kind: type: string readOnly: true enum: - b2b - end-user description: If b2b, the account is a regular account. If end-user, the account is a customer account which contains just one user. x-readme-ref-name: AccountKind mainAddress: title: Address description: Represents a physical address of a customer. allOf: - type: object properties: city: description: The city of the location. type: string example: Aachen country: description: The country of the location. type: string example: Germany addressLine1: description: 'First line of the location''s address, typically containing the main information such as the street name and house number. ' type: string example: Oppenhoffallee 143 addressLine2: description: 'Second line of the location''s address, typically containing additional information such as apartment numbers, suite numbers, or other details that can help in identifying the exact location of the address. ' type: string addressLine3: description: 'Third line of the location''s address, typically containing any other details that can help in identifying the exact location of the address. ' type: string addressLine4: description: 'Fourth line of the location''s address, typically containing any other details that can help in identifying the exact location of the address. ' type: string timeZone: description: The TZ Identifier of the location's timezone. type: string example: Europe/Berlin readOnly: true x-readme-ref-name: InventoryAbstractLocation - type: object properties: postalcode: description: The postal code of the location. type: string example: '52062' region: description: The region of the address. type: string telephone: description: The telephone number of the customer. type: string x-readme-ref-name: InventoryAddress customization: description: Customization can be used to store arbitrary data. required: - id - createdAt - updatedAt x-readme-ref-name: InventoryAccount '403': description: Forbidden. content: application/vnd.gridx.v2+json: schema: readOnly: true allOf: - title: General Exception description: Represents a general error structure returned by our REST API. type: object properties: message: type: string description: Message represents the message reported to the user. details: type: array description: 'Details represents detail information for the user to fix this problem ' items: type: string required: - message x-readme-ref-name: GeneralException - title: UnauthorizedError - Forbidden Error description: Forbidden Error example: message: Bad credentials x-readme-ref-name: ForbiddenException '404': description: Account not found. content: application/vnd.gridx.v2+json: schema: readOnly: true allOf: - title: General Exception description: Represents a general error structure returned by our REST API. type: object properties: message: type: string description: Message represents the message reported to the user. details: type: array description: 'Details represents detail information for the user to fix this problem ' items: type: string required: - message x-readme-ref-name: GeneralException - title: ClientError - Not Found description: Not Found indicates that the entity was not found. example: message: Not Found x-readme-ref-name: NotFoundException '422': description: Validation failed. content: application/vnd.gridx.v2+json: schema: readOnly: true allOf: - title: General Exception description: Represents a general error structure returned by our REST API. type: object properties: message: type: string description: Message represents the message reported to the user. details: type: array description: 'Details represents detail information for the user to fix this problem ' items: type: string required: - message x-readme-ref-name: GeneralException - title: ClientError - Validation description: 'Validation indicates that the request body contains fields which does not pass the validation. ' type: object required: - message - details example: message: Validation failed details: - email is not valid x-readme-ref-name: InvalidException '500': description: There has been an internal error on our side. We're looking into it. content: application/vnd.gridx.v2+json: schema: readOnly: true allOf: - title: General Exception description: Represents a general error structure returned by our REST API. type: object properties: message: type: string description: Message represents the message reported to the user. details: type: array description: 'Details represents detail information for the user to fix this problem ' items: type: string required: - message x-readme-ref-name: GeneralException - title: ServerSideError - Internal Server Error description: Internal Server Error example: message: Internal Server Error x-readme-ref-name: InternalException security: - HeaderAuth: - AccountsWrite x-code-samples: - lang: python label: Python source: "import requests\n\nurl = \"https://api.gridx.de/accounts/accountID/systems\"\n\nheaders = {\n \"accept\": \"application/vnd.gridx.v2+json\",\n \"content-type\": \"application/json\"\n}\n\nresponse = requests.post(url, headers=headers)\n\nprint(response.text)" - lang: shell label: Shell source: "curl --request POST \\\n --url https://api.gridx.de/accounts/accountID/systems \\\n --header 'accept: application/vnd.gridx.v2+json' \\\n --header 'content-type: application/json'" - lang: go label: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io\"\n)\n\nfunc main() {\n\n\turl := \"https://api.gridx.de/accounts/accountID/systems\"\n\n\treq, _ := http.NewRequest(\"POST\", url, nil)\n\n\treq.Header.Add(\"accept\", \"application/vnd.gridx.v2+json\")\n\treq.Header.Add(\"content-type\", \"application/json\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := io.ReadAll(res.Body)\n\n\tfmt.Println(string(body))\n\n}" - lang: javascript label: Javascript source: "const options = {\n method: 'POST',\n headers: {accept: 'application/vnd.gridx.v2+json', 'content-type': 'application/json'}\n};\n\nfetch('https://api.gridx.de/accounts/accountID/systems', options)\n .then(res => res.json())\n .then(res => console.log(res))\n .catch(err => console.error(err));" - lang: java label: Java source: "OkHttpClient client = new OkHttpClient();\n\nRequest request = new Request.Builder()\n .url(\"https://api.gridx.de/accounts/accountID/systems\")\n .post(null)\n .addHeader(\"accept\", \"application/vnd.gridx.v2+json\")\n .addHeader(\"content-type\", \"application/json\")\n .build();\n\nResponse response = client.newCall(request).execute();" - lang: java label: Kotlin source: "val client = OkHttpClient()\n\nval request = Request.Builder()\n .url(\"https://api.gridx.de/accounts/accountID/systems\")\n .post(null)\n .addHeader(\"accept\", \"application/vnd.gridx.v2+json\")\n .addHeader(\"content-type\", \"application/json\")\n .build()\n\nval response = client.newCall(request).execute()" - lang: javascript label: Swift source: "import Foundation\n\nlet url = URL(string: \"https://api.gridx.de/accounts/accountID/systems\")!\nvar request = URLRequest(url: url)\nrequest.httpMethod = \"POST\"\nrequest.timeoutInterval = 10\nrequest.allHTTPHeaderFields = [\n \"accept\": \"application/vnd.gridx.v2+json\",\n \"content-type\": \"application/json\"\n]\n\nlet (data, _) = try await URLSession.shared.data(for: request)\nprint(String(decoding: data, as: UTF8.self))" - lang: csharp label: C# source: 'using RestSharp; var options = new RestClientOptions("https://api.gridx.de/accounts/accountID/systems"); var client = new RestClient(options); var request = new RestRequest(""); request.AddHeader("accept", "application/vnd.gridx.v2+json"); request.AddHeader("content-type", "application/json"); var response = await client.PostAsync(request); Console.WriteLine("{0}", response.Content); ' delete: operationId: unassignSystemFromAccount summary: Unassign a System from an Account description: 'Unassigning a (list of) system(s) from an account removes access to the system(s) from that account, but keeps it for its parents. If the account does not have access to the system, this operation is a no-op. It will give a successful response, but nothing is done. If the account is an end-user: - The end-user is unassigned from the system. If the account is a b2b: - The system is unassigned from the account, and any currently assigned end-user accounts are moved to its parent. It is not possible to: - Unassign a system with end-users from a b2b account whose parent is in a different audience. Any end-users must first be deleted. When a system gets unassigned from a b2b account, its product option may be unassigned if it is no longer reachable from its parent. If the parent has any default product options, they will be assigned, unless the system was already assigned to a product option which is still reachable from the parent.' tags: - System parameters: - name: accountID description: 'Unique identifier used to access an account. ' in: path required: true schema: type: string format: uuid example: 17874c1b-d073-4b06-bf01-a1497fbe1142 requestBody: description: Unassigns a system (and its customers) from an account. required: true content: application/json: schema: title: System-Account unassignment type: object required: - uuids properties: moveSystemsAndCustomers: description: '**Deprecated** - This parameter no longer carries any logic - the behavior is `true` by default, even if `false` is set in the body. - `true`: Unassigns the system from the given account (accountID parameter). Moves the customer account to the parent account of the account the system is unassigned from (accountID parameter). - `false`: Unassigns the system from the given account (accountID parameter). ' type: boolean deprecated: true default: true moveVendorID: description: "**Deprecated** - This parameter no longer carries any logic - the behavior is `true` by default, even if `false` is set in the body.\n\n - `true`: Updates the vendorID of the gateway of the specified system to the target accounts' parentID.\n - `false`: Does not update the vendorID of the gateway of the specified system.\n" type: boolean deprecated: true default: true uuids: description: System IDs that will be removed from the target account. It can include up to 150 System IDs. type: array maxItems: 150 items: type: string example: aa3e5a93-bb38-4b15-b7f2-af40daf3a1dc x-readme-ref-name: SystemAccountUnAssignment responses: '200': description: System unassigned from account. content: application/vnd.gridx.v2+json: schema: title: Account description: 'An account describes an organizational unit to manage access to systems for one or multiple users. ' type: object readOnly: true allOf: - title: Account description: 'An account describes an organizational unit to manage access to systems for one or multiple users. This is the base type for the more concrete usages and not used directly within operations. ' type: object properties: name: type: string example: John Doe description: Name of the account, can be chosen freely but should be kept terse and descriptive. minLength: 1 maxLength: 256 email: type: string example: john@doe.com description: The email field of the account can optionally be chosen e.g. for contact purposes (in order to reach the responsible person for the account). maxLength: 256 solution: type: string description: 'Represents the supported solutions within the account: - HOME if the account contains household-like systems. - CHARGE if the account is used solely for charging station fleet management. - GENERAL if unsure what the account should contain or if it''s a mix of multiple solutions. - SMART_DISTRICT if the account is used solely for smart district management. If not set, the parent account''s solution will be assumed. ' enum: - HOME - CHARGE - GENERAL - SMART_DISTRICT - MICROGRID - HOME_VIRTUAL_METERING - COMMERCIAL - CUSTOM_P2P x-readme-ref-name: InventoryAccountSolution x-readme-ref-name: InventoryAbstractAccount - properties: id: type: string format: uuid example: 49a4f165-8233-426b-a1a4-e569665a25dd description: Uniquely identifies the account. parentID: type: string format: uuid example: 19a4f165-8233-426b-a1a4-e569665a25dd description: Parent of the account for a tree-like account structure. Only the root account does not have a parent ID. createdAt: type: string format: date-time description: Specifies when the account was created. updatedAt: type: string format: date-time description: Specifies when the account was updated. systemsCount: type: integer description: SystemCount is the number of systems assigned to this account example: 1 kind: type: string readOnly: true enum: - b2b - end-user description: If b2b, the account is a regular account. If end-user, the account is a customer account which contains just one user. x-readme-ref-name: AccountKind mainAddress: title: Address description: Represents a physical address of a customer. allOf: - type: object properties: city: description: The city of the location. type: string example: Aachen country: description: The country of the location. type: string example: Germany addressLine1: description: 'First line of the location''s address, typically containing the main information such as the street name and house number. ' type: string example: Oppenhoffallee 143 addressLine2: description: 'Second line of the location''s address, typically containing additional information such as apartment numbers, suite numbers, or other details that can help in identifying the exact location of the address. ' type: string addressLine3: description: 'Third line of the location''s address, typically containing any other details that can help in identifying the exact location of the address. ' type: string addressLine4: description: 'Fourth line of the location''s address, typically containing any other details that can help in identifying the exact location of the address. ' type: string timeZone: description: The TZ Identifier of the location's timezone. type: string example: Europe/Berlin readOnly: true x-readme-ref-name: InventoryAbstractLocation - type: object properties: postalcode: description: The postal code of the location. type: string example: '52062' region: description: The region of the address. type: string telephone: description: The telephone number of the customer. type: string x-readme-ref-name: InventoryAddress customization: description: Customization can be used to store arbitrary data. required: - id - createdAt - updatedAt x-readme-ref-name: InventoryAccount '403': description: Forbidden. content: application/vnd.gridx.v2+json: schema: readOnly: true allOf: - title: General Exception description: Represents a general error structure returned by our REST API. type: object properties: message: type: string description: Message represents the message reported to the user. details: type: array description: 'Details represents detail information for the user to fix this problem ' items: type: string required: - message x-readme-ref-name: GeneralException - title: UnauthorizedError - Forbidden Error description: Forbidden Error example: message: Bad credentials x-readme-ref-name: ForbiddenException '404': description: Account not found. content: application/vnd.gridx.v2+json: schema: readOnly: true allOf: - title: General Exception description: Represents a general error structure returned by our REST API. type: object properties: message: type: string description: Message represents the message reported to the user. details: type: array description: 'Details represents detail information for the user to fix this problem ' items: type: string required: - message x-readme-ref-name: GeneralException - title: ClientError - Not Found description: Not Found indicates that the entity was not found. example: message: Not Found x-readme-ref-name: NotFoundException '422': description: Validation failed. content: application/vnd.gridx.v2+json: schema: readOnly: true allOf: - title: General Exception description: Represents a general error structure returned by our REST API. type: object properties: message: type: string description: Message represents the message reported to the user. details: type: array description: 'Details represents detail information for the user to fix this problem ' items: type: string required: - message x-readme-ref-name: GeneralException - title: ClientError - Validation description: 'Validation indicates that the request body contains fields which does not pass the validation. ' type: object required: - message - details example: message: Validation failed details: - email is not valid x-readme-ref-name: InvalidException '500': description: There has been an internal error on our side. We're looking into it. content: application/vnd.gridx.v2+json: schema: readOnly: true allOf: - title: General Exception description: Represents a general error structure returned by our REST API. type: object properties: message: type: string description: Message represents the message reported to the user. details: type: array description: 'Details represents detail information for the user to fix this problem ' items: type: string required: - message x-readme-ref-name: GeneralException - title: ServerSideError - Internal Server Error description: Internal Server Error example: message: Internal Server Error x-readme-ref-name: InternalException security: - HeaderAuth: - AccountsWrite x-code-samples: - lang: python label: Python source: "import requests\n\nurl = \"https://api.gridx.de/accounts/accountID/systems\"\n\npayload = { \"uuids\": [\"aa3e5a93-bb38-4b15-b7f2-af40daf3a1dc\"] }\nheaders = {\n \"accept\": \"application/vnd.gridx.v2+json\",\n \"content-type\": \"application/json\"\n}\n\nresponse = requests.delete(url, json=payload, headers=headers)\n\nprint(response.text)" - lang: shell label: Shell source: "curl --request DELETE \\\n --url https://api.gridx.de/accounts/accountID/systems \\\n --header 'accept: application/vnd.gridx.v2+json' \\\n --header 'content-type: application/json' \\\n --data '\n{\n \"uuids\": [\n \"aa3e5a93-bb38-4b15-b7f2-af40daf3a1dc\"\n ]\n}\n'" - lang: go label: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io\"\n)\n\nfunc main() {\n\n\turl := \"https://api.gridx.de/accounts/accountID/systems\"\n\n\tpayload := strings.NewReader(\"{\\\"uuids\\\":[\\\"aa3e5a93-bb38-4b15-b7f2-af40daf3a1dc\\\"]}\")\n\n\treq, _ := http.NewRequest(\"DELETE\", url, payload)\n\n\treq.Header.Add(\"accept\", \"application/vnd.gridx.v2+json\")\n\treq.Header.Add(\"content-type\", \"application/json\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := io.ReadAll(res.Body)\n\n\tfmt.Println(string(body))\n\n}" - lang: javascript label: Javascript source: "const options = {\n method: 'DELETE',\n headers: {accept: 'application/vnd.gridx.v2+json', 'content-type': 'application/json'},\n body: JSON.stringify({uuids: ['aa3e5a93-bb38-4b15-b7f2-af40daf3a1dc']})\n};\n\nfetch('https://api.gridx.de/accounts/accountID/systems', options)\n .then(res => res.json())\n .then(res => console.log(res))\n .catch(err => console.error(err));" - lang: java label: Java source: "OkHttpClient client = new OkHttpClient();\n\nMediaType mediaType = MediaType.parse(\"application/json\");\nRequestBody body = RequestBody.create(mediaType, \"{\\\"uuids\\\":[\\\"aa3e5a93-bb38-4b15-b7f2-af40daf3a1dc\\\"]}\");\nRequest request = new Request.Builder()\n .url(\"https://api.gridx.de/accounts/accountID/systems\")\n .delete(body)\n .addHeader(\"accept\", \"application/vnd.gridx.v2+json\")\n .addHeader(\"content-type\", \"application/json\")\n .build();\n\nResponse response = client.newCall(request).execute();" - lang: java label: Kotlin source: "val client = OkHttpClient()\n\nval mediaType = MediaType.parse(\"application/json\")\nval body = RequestBody.create(mediaType, \"{\\\"uuids\\\":[\\\"aa3e5a93-bb38-4b15-b7f2-af40daf3a1dc\\\"]}\")\nval request = Request.Builder()\n .url(\"https://api.gridx.de/accounts/accountID/systems\")\n .delete(body)\n .addHeader(\"accept\", \"application/vnd.gridx.v2+json\")\n .addHeader(\"content-type\", \"application/json\")\n .build()\n\nval response = client.newCall(request).execute()" - lang: javascript label: Swift source: "import Foundation\n\nlet parameters = [\"uuids\": [\"aa3e5a93-bb38-4b15-b7f2-af40daf3a1dc\"]] as [String : Any?]\n\nlet postData = try JSONSerialization.data(withJSONObject: parameters, options: [])\n\nlet url = URL(string: \"https://api.gridx.de/accounts/accountID/systems\")!\nvar request = URLRequest(url: url)\nrequest.httpMethod = \"DELETE\"\nrequest.timeoutInterval = 10\nrequest.allHTTPHeaderFields = [\n \"accept\": \"application/vnd.gridx.v2+json\",\n \"content-type\": \"application/json\"\n]\nrequest.httpBody = postData\n\nlet (data, _) = try await URLSession.shared.data(for: request)\nprint(String(decoding: data, as: UTF8.self))" - lang: csharp label: C# source: 'using RestSharp; var options = new RestClientOptions("https://api.gridx.de/accounts/accountID/systems"); var client = new RestClient(options); var request = new RestRequest(""); request.AddHeader("accept", "application/vnd.gridx.v2+json"); request.AddJsonBody("{\"uuids\":[\"aa3e5a93-bb38-4b15-b7f2-af40daf3a1dc\"]}", false); var response = await client.DeleteAsync(request); Console.WriteLine("{0}", response.Content); ' servers: - url: https://api.gridx.de description: Production /systems: get: summary: List all Systems operationId: listSystems description: 'List pages of systems that are accessible to the authenticated user. This endpoint supports pagination. **Important**: Make use of `include` query param whenever possible! By default all fields of a system are included. This is very expensive and takes a long time. To save compute resources and allow fast response times, use `include` to include only the fields you need. If you don''t need any include field, use `include=-` to not include anything unnecessary. Setting the parameter to an empty value risks that it gets omitted by accident, so it''s better to set it to "-", to make sure it''s really present.' tags: - System parameters: - name: embed description: 'Describes which embedded fields of the system should be populated. **Only applicable for stable version, removed in the draft!** ' deprecated: true in: query schema: type: string enum: - user - name: include description: 'This query param allows to set certain fields only when needed. This makes the request faster as it requires to load only necessary data. Requesting any of the `gateways` nested fields like `gateways.applianceComposition`, `gateways.connectionStatus` or `gateways.additionalIdentifiers` will result in the `gateways` field being set. However, only requesting the `gateways` field will not set these expensive nested fields by default. The response would only include basic `gateways` nested fields. **Only applicable for stable version!** If this param is set, only the specified fields are included. All other fields, which are possible to include, will be excluded then. assetsStatus and assetsKinds and tags are only available in the draft version. **Only applicable for draft version!** If this param is not set, none of the specified fields will be included in the response. ' in: query explode: false schema: type: array items: type: string enum: - gateways - gateways.applianceComposition - gateways.connectionStatus - gateways.additionalIdentifiers - accounts - location - priorities - appliancePriorities - status - gatewayStatus - parentID - visibleFields - visibleAppliances - productOption - assetsStatus - assetsKinds - assetsGatewayType - tags - name: filterBy in: query required: false description: "Use this query parameter to filter the result set by a `field:operator(value)` expression.\n\nCombine multiple expressions (the result matches _all_ of them) by repeating the parameter, e.g.\n`?filterBy=field1:op(value1)&filterBy=field2:op(value2,value3)`. A single semicolon-separated value also works,\nbut `;` **must** be URL-encoded as `%3B`, since an unencoded `;` is dropped by the server.\n\nSupported operators are:\n* `eq` - equals. Accepts 0 or 1 values and is case sensitive\n* `ne` - not equals. Accepts 0 or 1 values and is case sensitive\n* `has` - has. Checks if a matching tag name/tag value pair exists (see /systems/{systemID}/tags). Accepts exactly 2 values and is case sensitive\n* `incl` - includes. Accepts 1 or more values and is case sensitive\n* `excl` - excludes. Accepts 1 or more values and is case sensitive\n* `lt` - less than. Accepts exactly one value and is case sensitive\n* `le` - less than or equal. Accepts exactly one value and is case sensitive\n* `gt` - greater than. Accepts exactly one value and is case sensitive\n* `ge` - greater than or equal. Accepts exactly one value and is case sensitive\n* `li` - like. Accepts exactly one value and is case insensitive\n* `empty` - is empty. Accepts no values and is case insensitive\n* `nempty` - is not empty. Accepts no values and is case insensitive\n* `any` - applies to array fields, true if it contains any of the given values. Accepts 1 or more values and is case sensitive\n* `only` - applies to array fields, true every distinct value in the field is among the given values. Accepts 1 or more values and is case sensitive\n* `all` - applies to array fields, true if it contains all of the given values. Accepts 1 or more values and is case sensitive\n* `none` - applies to array fields, true if it contains none of the given values. Accepts 1 or more values and is case sensitive\n* `bool` - applies to boolean fields. Accepts 1 string value that is either `true` or `false`\n\nNot all fields are available for filtering and not all filters are supported on all fields. The available \nfields are:\n* `name` - accepts `eq`, `incl`, `excl`, `li`\n* `gatewaySN` - accepts `eq`, `incl`, `excl`, `li`, `empty`, `nempty`\n* `wizardStatus` - accepts `eq`, `neq`, `incl`, `excl`, `li`\n* `gatewayStatus` - accepts `eq`, `neq`, `incl`, `excl`, `li`\n* `createdAt` - accepts `lt`, `le`, `gt`, `ge`\n* `updatedAt` - accepts `lt`, `le`, `gt`, `ge`\n* `lastHeartbeatReceivedAt` - accepts `lt`, `le`, `gt`, `ge` (deprecated, will be removed in future versions)\n* `parentID` - accepts `eq`, `incl`, `excl`\n* `systemID` - accepts `eq`, `incl`, `excl`\n* `gatewayID` - accepts `eq`, `incl`, `excl`, `empty`, `nempty`\n* `assetsGatewayType` - accepts `eq`, `ne`, `incl`, `excl`\n* `tags` - accepts `has`\n* `assetsStatus` - accepts `eq`, `neq`, `incl`, `excl`, `li`\n* `assetsKinds` - accepts `any`, `all`, `none`\n* `isStarred` - accepts `bool`\n\nAllowed values for the operators are dependent on the field they are applied to. The allowed values for each field are:\n* `name` - accepts any string value\n* `gatewaySN` - accepts any string value\n* `wizardStatus` - accepts any string value\n* `gatewayStatus` - accepts `AVAILABLE`, `UNAVAILABLE`, `UNKNOWN`\n* `createdAt` - accepts a timestamp in RFC3339 format, e.g. `2021-10-13T14:23:30Z`\n* `updatedAt` - accepts a timestamp in RFC3339 format, e.g. `2021-10-13T14:23:30Z`\n* `lastHeartbeatReceivedAt` - accepts a timestamp in RFC3339 format, e.g. `2021-10-13T14:23:30Z`\n* `parentID` - accepts a UUID string value, e.g. `550e8400-e29b-41d4-a716-446655440000`\n* `systemID` - accepts a UUID string value, e.g. `550e8400-e29b-41d4-a716-446655440000`\n* `gatewayID` - accepts a UUID string value, e.g. `550e8400-e29b-41d4-a716-446655440000`\n* `assetsGatewayType` - accepts `GRIDBOX`, `CLOUD`, or `HYBRID` (HYBRID means the system has both GRIDBOX and CLOUD assets)\n* `tags` - accepts any string value\n* `assetsStatus` - accepts `AVAILABLE`, `UNAVAILABLE`, `UNHEALTHY`, `UNKNOWN`\n* `assetsKinds` - accepts any string, refer to the list of available asset kinds in the documentation\n* `isStarred` - accepts any boolean value, i.e. `true` or `false`\n\nMake sure that the string is URL encoded according to RFC 3986.\n" schema: type: string pattern: '^(((\w+):(eq|ne|has|incl|excl|lt|le|gt|ge|li|empty|nempty|any|only|all|none|bool)\((([^,();]*)(,[^,();]+)*))\))(;((\w+):(eq|ne|has|incl|excl|lt|le|gt|ge|li|empty|nempty|any|only|all|none|bool)\((([^,();]*)(,[^,();]+)*)\)))*$ ' style: form explode: false - name: sortBy in: query required: false description: "Specify a comma-separated list of direction and fields that the result set will be sorted by. Note that the \norder of the fields matters and the leftmost field in the list will take the highest precedence. The \noperator can be either `+` for sorting the column in an ascending order (typically a to z or 1 to 9) or `-`\nfor a descending order (from z to a or 9 to 1). The field names are identical to the ones that are available\nfor filtering (see `filterBy` query parameter).\n" schema: type: string pattern: ^(\+|-)(\w+)(,(\+|-)(\w+))*$ style: form explode: false example: +field1,-field2 - name: limit description: 'Limit the number of elements returned responses to the specified number. If fewer elements than the given number are available, then this number is obsolete. ' in: query required: false schema: type: integer default: 20 example: 20 - name: offset description: 'Specifying an offset will omit the first `n` elements in the result set where `n` is the number given to the offset query parameter. In combination with limiting and sorting, this enables pagination. ' in: query required: false schema: type: integer default: 0 example: 0 - name: page description: 'Requested page, to be used in combination with the `per_page` parameter. ' in: query schema: type: integer format: int32 default: 1 minimum: 1 example: 1 - name: per_page description: 'Requested number of items per page. ' in: query schema: type: integer format: int32 default: 20 minimum: 20 maximum: 500 example: 10 responses: '200': description: A page of systems. content: application/vnd.gridx.v2+json: schema: type: array items: allOf: - title: System description: "A System represents the logical view of one gateway and its appliances.\n\nFor example, a household can be represented as a system with a gateway such as a \ngridBox, and its connected appliances.\n" allOf: - title: System description: "A System represents the logical view of one gateway and its appliances.\n \nFor example, a household can be represented as a system with a gateway such as a \ngridBox, and its connected appliances.\n" type: object allOf: - title: System description: "A System represents the logical view of one gateway and its appliances.\n\nFor example, a household can be represented as a system with a gateway such as a \ngridBox, and its connected appliances.\n" properties: name: type: - string - 'null' maxLength: 200 description: Name of the System. example: gridX Headquarter solution: type: string description: "Represents the solution that the system uses:\n- HOME if the system is for a household. \n- CHARGE if the system is for charging station fleet management.\n" x-extensible-enum: - HOME - CHARGE - GENERAL - SMART_DISTRICT - MICROGRID - HOME_VIRTUAL_METERING - COMMERCIAL - CUSTOM_P2P x-readme-ref-name: SystemSolution priorities: description: Allows prioritisation of EMS functionalities by appliance type. Accepted values are ["BATTERY", "EV", "HEATPUMP", "HEATER"]. type: array items: type: string example: - EV - BATTERY appliancePriorities: type: array description: 'Allows prioritisation of EMS functionalities by appliance UUIDs. This option takes precendence over `priorities` field as it is more explicit. ' items: type: string format: uuid plan: description: "Charge plan of the system. Must be one of two possible options: \n * `2020_DLM_EVS_00` - Use this value for Dynamic Load Management.\n * `2020_SLM_EVS_00` - Use this value for Static Load Management.\n" type: string x-extensible-enum: - 2020_DLM_EVS_00 - 2020_SLM_EVS_00 x-readme-ref-name: SystemChargePlan operatingSince: type: string format: date-time description: Date since when the system is active in RFC3339 format. example: '2017-12-23T10:15:40Z' curtailmentStrategy: type: string deprecated: true description: "Deprecated: Only EQUALLY remains available and future implementations will likely use another field name.\nThe curtailment strategy describes how appliances shall be curtailed.\n * EQUALLY: Every appliance gets equally (fair) curtailed.\n" x-extensible-enum: - EQUALLY x-readme-ref-name: SystemCurtailmentStrategy location: title: Location description: Represents a GPS location with longitude and latitude. type: object allOf: - type: object properties: city: description: The city of the location. type: string example: Aachen country: description: The country of the location. type: string example: Germany addressLine1: description: 'First line of the location''s address, typically containing the main information such as the street name and house number. ' type: string example: Oppenhoffallee 143 addressLine2: description: 'Second line of the location''s address, typically containing additional information such as apartment numbers, suite numbers, or other details that can help in identifying the exact location of the address. ' type: string addressLine3: description: 'Third line of the location''s address, typically containing any other details that can help in identifying the exact location of the address. ' type: string addressLine4: description: 'Fourth line of the location''s address, typically containing any other details that can help in identifying the exact location of the address. ' type: string timeZone: description: The TZ Identifier of the location's timezone. type: string example: Europe/Berlin readOnly: true x-readme-ref-name: InventoryAbstractLocation - type: object properties: country: deprecated: true description: 'Deprecated - Instead of this freeform text field, use countryCode ' countryCode: type: string description: Country code in ISO 3166-1 alpha-2. example: DE enum: - AF - AX - AL - DZ - AS - AD - AO - AI - AQ - AG - AR - AM - AW - AU - AT - AZ - BS - BH - BD - BB - BY - BE - BZ - BJ - BM - BT - BO - BQ - BA - BW - BV - BR - IO - BN - BG - BF - BI - CV - KH - CM - CA - KY - CF - TD - CL - CN - CX - CC - CO - KM - CG - CD - CK - CR - CI - HR - CU - CW - CY - CZ - DK - DJ - DM - DO - EC - EG - SV - GQ - ER - EE - SZ - ET - FK - FO - FJ - FI - FR - GF - PF - TF - GA - GM - GE - DE - GH - GI - GR - GL - GD - GP - GU - GT - GG - GN - GW - GY - HT - HM - VA - HN - HK - HU - IS - IN - ID - IR - IQ - IE - IM - IL - IT - JM - JP - JE - JO - KZ - KE - KI - KP - KR - KW - KG - LA - LV - LB - LS - LR - LY - LI - LT - LU - MO - MG - MW - MY - MV - ML - MT - MH - MQ - MR - MU - YT - MX - FM - MD - MC - MN - ME - MS - MA - MZ - MM - NA - NR - NP - NL - NC - NZ - NI - NE - NG - NU - NF - MK - MP - 'NO' - OM - PK - PW - PS - PA - PG - PY - PE - PH - PN - PL - PT - PR - QA - RE - RO - RU - RW - BL - SH - KN - LC - MF - PM - VC - WS - SM - ST - SA - SN - RS - SC - SL - SG - SX - SK - SI - SB - SO - ZA - GS - SS - ES - LK - SD - SR - SJ - SE - CH - SY - TW - TJ - TZ - TH - TL - TG - TK - TO - TT - TN - TR - TM - TC - TV - UG - UA - AE - GB - US - UM - UY - UZ - VU - VE - VN - VG - VI - WF - EH - YE - ZM - ZW x-readme-ref-name: LocationCountryCode postalCode: description: The postal code of the location. type: string example: '52062' longitude: description: The geographic coordinate that specifies the east–west position of the location. type: number example: 6.09294299 readOnly: true latitude: description: The geographic coordinate that specifies the north–south position of the location. type: number example: 50.77441934 readOnly: true x-readme-ref-name: Location metadata: title: Metadata description: Represents system's metadata. type: object properties: wizard: title: Wizard type: object description: Represents the metadata to keep track of the current wizard step. required: - step properties: step: description: Represents the current wizard step. type: string x-extensible-enum: - WELCOME - STARTCODE - GRIDBOX_STATUS - SYSTEM_TYPE_SELECT - ACCOUNT_ASSIGNMENT - PERSONAL_INFORMATION - SYSTEM_OVERVIEW - SYSTEM_CHILDREN_SETUP - SYSTEM_SETUP - PARAGRAPH_14A - ENERGYMANAGEMENT - HEATING_ROD - ENERGYMANAGEMENT_ACTIVATION - ENERGY_SUPPLIER - SYSTEM_CHECK - DONE - ELECTRICITY_TARIFF_V2 - KOSTAL_CONFIGURATION - ENPHASE_CONNECTION - EEBUS_PAIRING - SONNEN_CONNECTION - IO_DEVICE_CONFIGURATION - IO_DEVICE_HEAT_PUMP_CONFIGURATION - TROUBLESHOOT_INSTALLATION - INSTALLER_HUB - ENA_G100 - PV_SYSTEM - FUSE_PROTECTION - ENERGY_OPTIMIZATION - UNKNOWN firstCompletedAt: description: Represents the date and time when the final wizard step was completed first time. type: string format: date-time readOnly: true example: '2025-06-22T00:00:00Z' version: description: Represents the version of wizard. type: integer x-extensible-enum: - 1 - 2 - 3 x-readme-ref-name: MetadataWizard energy: title: Energy Metadata type: object description: represents the metadata related to the energy use case. properties: installer: type: - string - 'null' description: Installer is the person who has installed the systems. norminalPower: type: - number - 'null' minimum: 0 description: 'The system''s maximal power production in W (for historical reasons the word "norminal" is used instead of the correct term "nominal power"). *Deprecated* - Use `nominalPower` instead (in mW!). ' deprecated: true nominalPower: type: - number - 'null' minimum: 0 description: The system's maximal power production in mW. 0 is used if unset. curtailment: type: - number - 'null' description: Curtailment is the percentage of system's nominal power at which the pv inverters should stop feeding into the grid. (0-1) heatingSystem: type: - string - 'null' description: HeatingSystem represents the type of the heating system. agreedEMSTerms: type: - boolean - 'null' deprecated: true description: 'AgreedEMSTerms indicates if the customers accepts the ems terms. *Deprecated* - Use `MetadataEMS.agreedEMSTerms` instead. ' ems: title: MetadataEMS type: object description: MetadataEMS represents the energy management allowances. properties: agreedEMSTerms: type: - boolean - 'null' description: AgreedEMSTerms indicates if the customers accepts the ems terms. enabledEMS: type: - boolean - 'null' description: EnabledEMS indicates if gridBox should activate the ems. agreedDynamicPVControlTerms: type: - boolean - 'null' description: AgreedDynamicPVControlTerms indicates if the customer accepts the dynamic pc control terms. enabledDynamicPVControl: type: - boolean - 'null' description: EnabledDynamicPVControl indicates if the gridBox should activate the dynamic pv control. enabledInverterGCPControl: type: - boolean - 'null' description: 'EnabledInverterGCPControl indicates if the gridBox should activate the inverter gcp control. *Deprecated* - This is automatically detected by the gridbox. If this field is unset or false, the gridbox will determine inverter GCP control activation automatically. ' deprecated: true agreedForecastBasedEMSTerms: type: - boolean - 'null' description: '*Deprecated* Feature is deprecated and will be removed in a future release. ' deprecated: true enabledForecastBasedEMS: type: - boolean - 'null' description: '*Deprecated* Feature is deprecated and will be removed in a future release. ' deprecated: true agreedPriorityConfigurationTerms: type: - boolean - 'null' description: AgreedPriorityConfigurationTerms indicates if the customer accepts the priority configuration terms. enabledPriorityConfiguration: type: - boolean - 'null' description: EnabledPriorityConfiguration indicates if the gridBox should activate the priority configuration. agreedPowerManagementTerms: type: - boolean - 'null' description: AgreedPowerManagementTerms indicates if the customer accepts the power management terms. enabledPowerManagement: type: - boolean - 'null' description: EnabledPowerManagement indicates if the gridBox should activate the power management. enabledStaticPowerManagement: type: - boolean - 'null' description: EnabledStaticPowerManagement indicates if the gridBox should activate the static power management. enabledPowerImportPeakOptimization: type: - boolean - 'null' description: EnabledPowerImportPeakOptimization indicates if the gridBox should activate the 15min avg. energy optimization algorithm. powerImportPeakPerOptimizationInterval: type: - number - 'null' format: double deprecated: true description: 'Describes the amount of imported energy in a 15 minutes interval in VA. Deprecated: Use powerImportPeakPerOptimizationIntervalmVA instead. ' powerImportPeakPerOptimizationIntervalmVA: type: - number - 'null' format: double description: Defines the average power in a 15 minute interval in mVA for peak shaving. enabledBatteryFullGridCharge: type: - boolean - 'null' description: '*Deprecated* Feature is deprecated and will be removed in a future release. The default behaviour is to always allow charging with full power and the setting is not required anymore. ' deprecated: true enabledLessConstrainingSOCLimits: type: - boolean - 'null' description: '*Deprecated* Feature is deprecated and will be removed in a future release. ' deprecated: true derAPISettings: title: DerAPISettings type: object description: DerAPISettings represents the metadata related to DER API configuration. properties: enabledCloudAPI: type: - boolean - 'null' description: EnabledCloudAPI enables assets control with cloud DER API. constraints: title: SyncEntitySettings type: object description: SyncEntitySettings configures entity synchronisation parameters. properties: syncInterval: type: - number - 'null' format: double description: SyncInterval defines the period in seconds for data to be synchronized between gridBox and cloud DER API. ttl: type: - number - 'null' format: double description: TTL defines the time to live in seconds for entity. disabled: type: boolean description: Disabled disables the sync of entities. x-readme-ref-name: SyncEntitySettings flexibilities: title: SyncEntitySettings type: object description: SyncEntitySettings configures entity synchronisation parameters. properties: syncInterval: type: - number - 'null' format: double description: SyncInterval defines the period in seconds for data to be synchronized between gridBox and cloud DER API. ttl: type: - number - 'null' format: double description: TTL defines the time to live in seconds for entity. disabled: type: boolean description: Disabled disables the sync of entities. x-readme-ref-name: SyncEntitySettings x-readme-ref-name: DerAPISettings enabledTimeOfUseOptimization: deprecated: true type: - boolean - 'null' description: 'Indicates if time of use optimization is enabled for the system. *Deprecated* - Use `systems/{systemID}/timeofuse/options` endpoint instead. ' disableAveragePmaxCalculation: type: - boolean - 'null' description: Disables the average pMax calculation. It means EMS will not calculate average pMax and will get the default value instead. excludeApplianceTypes: description: Appliance types to be ignored by the EMS. Updating this field to an empty array clears it. **Please note that this currently requires the box to be restarted to take effect**. type: - array - 'null' items: type: string x-extensible-enum: - HEAT_PUMP evChargingReallocationTolerance: description: Specifies the maximum power in mW that can be drawn to charge an EV in case the PV surplus is not sufficient. type: - number - 'null' format: double example: 500000 enabledPowerWindowHysteresis: description: Configures the system to use the power window hysteresis feature. If unset, the system will behave as if this was activated. Set to false to deactivate. type: - boolean - 'null' x-readme-ref-name: MetadataEMS smartMeterInstallationTimestamp: description: The time the smart meter has been installed (if any), in RFC3339 format. type: - string - 'null' format: date-time example: '2020-09-21T00:00:00Z' x-readme-ref-name: MetadataEnergy energySupplier: title: Energy Supplier type: object description: MetadataEnergySupplier represents the metadata related to energy supplier. properties: type: type: - string - 'null' deprecated: true description: Type determines if gridX is the energy supplier. The value is either "GRIDX" or "OTHER". enum: - GRIDX - OTHER unitPrice: type: - number - 'null' description: UnitPrice is unit price per kWh in EU cent. Deprecated - Use TariffV2 instead. deprecated: true installment: type: - number - 'null' description: Installment is the monthly payment. baseFee: type: - number - 'null' description: BaseFee is the monthly base fee. feedInTariff: type: - number - 'null' description: FeedInTariff is the cost-based compensation in EUR cent for feeding in. Deprecated - Use TariffV2 instead. deprecated: true expectedConsumption: type: - number - 'null' description: ExpectedConsumption is the expected annual consumption in kWh. x-readme-ref-name: MetadataEnergySupplier smartMeter: title: Smart Meter description: Represents the metadata to report if a smart meter has been installed. type: object properties: installed: type: - boolean - 'null' description: Reports if the smart meter has been installed. hasInstallationDate: type: - boolean - 'null' description: Reports if the provider has sent us a installation date that can be found in energy metadata. x-readme-ref-name: MetadataSmartMeter x-readme-ref-name: SystemMetadata x-readme-ref-name: AbstractSystem - properties: id: type: string format: uuid readOnly: true description: Unique identifier of a system. example: aa3e5a93-bb38-4b15-b7f2-af40daf3a1dc createdAt: type: string format: date-time readOnly: true description: Date when the system was created in RFC3339 format. example: '2017-12-22T14:20:50Z' updatedAt: type: string format: date-time readOnly: true description: Date when the system was last updated in RFC3339 format. example: '2017-12-24T08:33:00Z' chargingIntervals: type: array readOnly: true description: Displays charging intervals of the system's EV charging stations. items: title: EV Charging Schedule type: object allOf: - title: EV Charging Schedule description: 'An Electric Vehicle charging schedule represents an interval in which the electric vehicle is supposed to charge at a defined limit. ' type: object properties: from: type: string format: date-time example: '2021-11-04T00:00:00Z' description: 'Specifies when the schedule should start in RFC3339 format. ' to: type: string format: date-time example: '2021-11-04T00:30:00Z' description: 'Specifies when the schedule should end in RFC3339 format. ' limit: description: 'The maximum amount of power in Watts that will be used for scheduling charging in the interval [from, to]. ' example: 75000 title: Positive Power in Watt. type: integer format: int64 minimum: 0 x-readme-ref-name: PositivePower x-readme-ref-name: AbstractEVChargingSchedule - properties: id: type: string format: uuid example: ec4d0c89-a604-49ac-82f0-427f9cb42204 readOnly: true updatedAt: type: string format: date-time readOnly: true description: Specifies when the schedule was updated the last time. - required: - id - from - to - limit x-readme-ref-name: EVChargingSchedule gateways: description: The gateways of which this system is comprised. type: array readOnly: true items: allOf: - title: Gateway description: 'A gateway used to monitor and control appliances. For instance, our beloved gridbox is a gateway. ' type: object properties: name: deprecated: true type: string maxLength: 255 description: Name of the gateway. debugModeUntil: deprecated: true type: string format: date-time description: 'Date until which debug messages are logged in RFC3339 format. **Deprecated**: defaults to `createdAt` + 3 days. ' x-readme-ref-name: AbstractGateway - properties: id: type: string format: uuid example: 6dd0a658-5828-4d30-bc65-a03c6d6e425f description: Unique identifier of a gateway. readOnly: true type: type: string description: 'Type of the gateway. **Deprecated** - Non-physical gateways will no longer be supported from 01.03.2024. This field will consequently be removed. ' deprecated: true enum: - VIRTUAL - PHYSICAL - OTHER x-readme-ref-name: GatewayType createdAt: type: string format: date-time readOnly: true description: Date when the Gateway was created in RFC3339 format. updatedAt: type: string format: date-time readOnly: true description: Date when the Gateway was last updated in RFC3339 format. registeredAt: deprecated: true type: string format: date-time readOnly: true description: 'Date when the Gateway was first registered in RFC3339 format. **Deprecated**: defaults to `createdAt`. ' connectionStatus: title: Connection Status type: object readOnly: true properties: status: type: string description: "Indicates the connection status. Is one of:\n * `AVAILABLE`: Gateway has sent data in the last 5 minutes\n * `TEMPORARILY_UNAVAILABLE`: Gateway has not sent data in the last 5 minutes\n * `UNAVAILABLE`: Gateway has not sent data in the last 24 hours\n * `UNKNOWN`: Gateway was never online and never sent data or the connection status can't be determined." enum: - AVAILABLE - TEMPORARILY_UNAVAILABLE - UNAVAILABLE - UNKNOWN contactedAt: type: string format: date-time deprecated: true description: 'When the gateway/appliance has last contacted the gridX cloud. In case the gateway was never online and never sent data, this field is null. Deprecated: Gateway heartbeats will be removed in future versions and this will be only estimated. Use `statusChangedAt` instead. ' statusChangedAt: type: string format: date-time description: 'When the gateway status last changed. In case the gateway was never online this field is null. ' required: - status x-readme-ref-name: ConnectionStatus vendorID: deprecated: true description: 'ID of the vendor account to which the corresponding system is assigned. **Deprecated**: omitted from responses by default. ' type: string format: uuid example: 6dd0a658-5828-4d30-bc65-a03c6d6e425f startcode: description: Code used to register a new gateway. type: string example: 39FDDF7D85BAAD2D manufacturer: deprecated: true description: 'Manufacturer of the gateway. **Deprecated**: defaults to `gridX`. ' type: string example: gridX readOnly: true model: description: Model of the gateway. type: string example: 2.00P-X readOnly: true serialnumber: description: Serial number of the gateway. type: string example: C083-200-000-000-199-P-X readOnly: true additionalIdentifiers: description: Additional identifiers used by the gateway. type: array items: title: Additional identifiers of the gridBox. description: Additional identifiers used by the gridBox. type: object properties: service: type: string readOnly: true description: The service this identifier is referring to, e.g the protocol used for the appliance-gridBox handshake example: EEBUS type: type: string readOnly: true description: The type of the identifier. example: SKI enum: - UNKNOWN - SKI identifier: type: string readOnly: true description: The actual identifier, e.g "SKI" used in the TLS certificate for the communication. If type is "SKI", it is hexadecimal-encoded. x-readme-ref-name: AdditionalIdentifier readOnly: true scanners: type: array readOnly: true description: List of scanner names that are enabled for this gateway. items: type: string description: The name of the scanner which searches for the appliance in the network. example: SMA_INVERTER_IGMP_HOST_DISCOVERY x-extensible-enum: - SMA_INVERTER_IGMP_HOST_DISCOVERY - SMA_INVERTER_ARP_HOST_DISCOVERY - SMA_METER - BCONTROL_METER - SOLAREDGE_INVERTER_METER_MODBUS_TCP - SOLAREDGE_INVERTER_METER_MODBUS_RTU - SOLARLOG_MONITOR - CUSTOMER_HOLFELDER_METER - CUSTOMER_HOLFELDER_INVERTER - E3DC_INVERTER_METER - KOSTAL_INVERTER - STUDER_INVERTER - FRONIUS_INVERTER - HUAWEI_INVERTER - KEBA_CHARGING_STATION - ECHARGE_CHARGING_STATION - INNOGY_CHARGING_STATION - ELECTRIS_METER - SOLARWATT_INVERTER_METER - ABL_CHARGING_STATION - SIEMENS_PAC_METER - JANITZA_METER - JANITZA_METER_RTU - EVTEC_CHARGING_STATION - HIKING_METER_RTU - EEBUS_FUEL_CELL_METER - KOSTAL_INVERTER_PLENTICORE - SONNENBATTERIE_UPNP - VIRTUAL_METER - MENNEKES_UPNP - ANYBUS_MBUS_CONVERTER_METER - EEBUS_GENERIC - SIMULATION_GENERIC - ALFEN_NG9XX_MODBUS_CHARGING_STATION - ALPITRONIC_HYPERCHARGER_MODBUS_CHARGING_STATION - MY_PV_AC_THOR_HEATER - COMPLEO_MODBUS_CHARGING_STATION - OCPP_CHARGING_STATION - BENDER_CHARGING_STATION - VOLTERION_REDOX_FLOW_BATTERY - XNET_METER - RSW_METER - SCHNEIDER_METER - INNOGY_MODBUS_CHARGING_STATION - MENNEKES_PREMIUM_MODBUS_CHARGING_STATION - PLPLANO_MODBUS_RTU_METER - HEIDELBERG_ENERGY_CONTROL_MODBUS_RTU_CHARGING_STATION - CARLO_GAVAZZI_MODBUS_RTU_METER - VESTEL_CHARGING_STATION - INNOTEC_HEAT_PUMP - WALLBE_MODBUS_CHARGING_STATION - EVBOX_MAX_CHARGING_STATION - ISKRAEMECO_METER - SUNGROW_MODBUS_INVERTER - WAGO_IO_DEVICE - GOE_CHARGING_STATION - XNET_CLOUD_HEAT_PUMP - XNET_CLOUD_GENERIC - LANDIS_GYR_METER - POWERDALE_CHARGING_STATION - EASTRON_SDM230_METER - EASTRON_SDM72DM_METER - ZUCCHETTI_CONNEXT_BOX - PLVARIO_ENERGY_METER_EM3 - ABB_OPC_UA_CHARGING_STATION - DATA_LOGGER_DEVICE - POWERSIDE_METER - PPC_METER - RUTENBECK_TCR_IP4_IO_DEVICE - JEAN_MUELLER_PL_MULTI_METER - ENPHASE_ENVOY_S_GATEWAY - SOLAX_MODBUS_RTU_INVERTER - ALPHA_ESS_HI10_HYBRID_INVERTER - ZUCCHETTI_MODBUS_RTU_INVERTER - STIEBEL_ELTRON_MODBUS_TCP_HEAT_PUMP - MENNEKES_AMTRON_COMPACT_2S_MODBUS_RTU_CHARGING_STATION - SAIA_PCD1_E_LINE_HEAT_PUMP - SUNGROW_SG_MODBUS_INVERTER - SOLAX_MODBUS_TCP_INVERTER - PHOENIX_CONTACT_EM_PRO_METER - DAIKIN_HOMEHUB_MODBUS_TCP_HEAT_PUMP - SOLPLANET_MODBUS_TCP_INVERTER - SUNGROW_SHXRS_SHXT_MODBUS_INVERTER - KOSTAD_DC_CHARGING_STATION - GIVENERGY_GIV_TCP_INVERTER - FOX_ESS_MODBUS_TCP_INVERTER - SHELLY_HTTP_METER - PIXII_MODBUS_TCP_BESS - GOODWE_MODBUS_TCP_INVERTER - READY_FOR_GRIDX - KOSTAL_ENECTOR_CHARGING_STATION - MENNEKES_4YOU_CHARGING_STATION - EKOENERGETYKA_CHARGING_STATION - VIESSMANN_EEBUS_INVERTER_AND_HEAT_PUMP - VAILLANT_EEBUS_HEAT_PUMP - PROLAN_EEBUS_STB - PPC_EEBUS_METER - THEBEN_SE_EEBUS_METER - DAIKIN_ALTHERMA4_MODBUS_TCP_HEAT_PUMP - FOXESS_CHARGING_STATION - BOSCH_BUDERUS_EEBUS_HEAT_PUMP - KOSTAL_EBOX_DC_B11_EEBUS_CHARGING_STATION - SOLPLANET_IBC_SOLAR_CHARGING_STATION - ADS_TEC_CHARGING_STATION - WOLF_EEBUS_HEAT_PUMP - SHELLY_3EMPRO_HTTP_METER - SHELLY_PRO2_HTTP_IO_DEVICE - SWISTEC_EEBUS_METER - BMW_DC_WALLBOX_EEBUS_CHARGING_STATION - SUNGROW_CHARGING_STATION - ETREL_INCH_DUO_CHARGING_STATION - ALPHAESS_SMILE_G3_T4_T10 - SUNGROW_EMS300CP_BESS - HUAWEI_SMART_LOGGER_BESS - SOLAX_MODBUS_TCP_METER x-readme-ref-name: ScannerName applianceComposition: type: array readOnly: true description: Appliance types that are connected to the gateway for overview purposes. example: - HEAT_PUMP items: type: string required: - id - type - connectionStatus - createdAt - updatedAt x-readme-ref-name: Gateway status: type: string readOnly: true deprecated: true enum: - UNDEFINED - OK - WARNING - ERROR description: "Status of the system: \n * `OK`: If the attached gateway is reported as ONLINE.\n * `WARNING`: If the attached gateway is reported as OFFLINE but less than 24h ago.\n * `ERROR`: If the attached gateway is reported as OFFLINE for more than 24h ago. \n * `UNDEFINED`: otherwise\n\n**Deprecated** - Use `gatewayStatus` instead.\n" gatewayStatus: type: string readOnly: true description: "Status of the system's gateway: \n * `AVAILABLE` - The gateway is reported as ONLINE.\n * `UNAVAILABLE` - The gateway is reported as OFFLINE.\n * `UNKNOWN` - The system has no gateway, or the gateway status is not known.\n\nIf you need more granularity, you can use the `connectionStatus` in `gateways` instead.\n" enum: - AVAILABLE - UNAVAILABLE - UNKNOWN assetsStatus: type: object readOnly: true description: 'Provides information about the system''s health, such as the computed combined status of all of its assets as well as their respective counts. Only included in the response if filtered by using the `filterBy` parameter, or included via the `include` parameter. ' properties: status: type: string description: 'The combined status of all of this system''s assets according to the following rules: AVAILABLE → All the assets are successfully connected in the last 5 minutes. UNHEALTHY → Only some assets are successfully connected in the last 5 minutes. UNAVAILABLE → No assets are successfully connected in the last 5 minutes. UNKNOWN → Fallback, e.g. system without assets or all assets have an unknown status. ' enum: - UNKNOWN - UNAVAILABLE - UNHEALTHY - AVAILABLE unknownCount: readOnly: true description: 'The total number of assets for which there is no status information. ' type: integer example: 321 unavailableCount: readOnly: true description: 'The total number of assets which have connected in the past but not in the past 5 minutes. ' type: integer example: 321 availableCount: readOnly: true description: 'The total number of assets which have connected in the past 5 minutes. ' type: integer example: 321 assetsKinds: type: array readOnly: true description: 'Provides information about the distinct kinds of assets attached to a system. Only included in the response if filtered by using the `filterBy` parameter, or included via the `include` parameter. ' items: type: string x-extensible-enum: - AIR_CONDITIONER - BATTERY - BTTP - CLUSTER - EV - EVSTATION - FUEL_CELL - GRID - HEAT_PUMP - HEAT_PUMP_EXTERNAL - HEATER - HEATING - HYBRID - IO_DEVICE - MISC - PV - PV_EXTERNAL - UNKNOWN - WIND_TURBINE assetsGatewayType: type: string readOnly: true description: 'Provides information about the gateway type of assets attached to a system. Returns HYBRID when both CLOUD and GRIDBOX assets are present. Omitted when the system has no assets. Only included in the response if filtered by using the `filterBy` parameter, or included via the `include` parameter. ' enum: - CLOUD - GRIDBOX - HYBRID tags: type: array readOnly: true description: 'Provides information about the distinct tags attached to a system. Only included in the response if filtered by using the `filterBy` parameter, or included via the `include` parameter. ' items: type: object properties: name: type: string value: type: string x-readme-ref-name: SystemWithoutProductOption - title: Embedded accounts description: 'Hierarchy of accounts the system belongs to, from the authenticated account down to the end customer''s. ' type: object properties: accounts: type: array items: title: Account description: 'An account describes an organizational unit to manage access to systems for one or multiple users. ' type: object readOnly: true allOf: - title: Account description: 'An account describes an organizational unit to manage access to systems for one or multiple users. This is the base type for the more concrete usages and not used directly within operations. ' type: object properties: name: type: string example: John Doe description: Name of the account, can be chosen freely but should be kept terse and descriptive. minLength: 1 maxLength: 256 email: type: string example: john@doe.com description: The email field of the account can optionally be chosen e.g. for contact purposes (in order to reach the responsible person for the account). maxLength: 256 solution: type: string description: 'Represents the supported solutions within the account: - HOME if the account contains household-like systems. - CHARGE if the account is used solely for charging station fleet management. - GENERAL if unsure what the account should contain or if it''s a mix of multiple solutions. - SMART_DISTRICT if the account is used solely for smart district management. If not set, the parent account''s solution will be assumed. ' enum: - HOME - CHARGE - GENERAL - SMART_DISTRICT - MICROGRID - HOME_VIRTUAL_METERING - COMMERCIAL - CUSTOM_P2P x-readme-ref-name: InventoryAccountSolution x-readme-ref-name: InventoryAbstractAccount - properties: id: type: string format: uuid example: 49a4f165-8233-426b-a1a4-e569665a25dd description: Uniquely identifies the account. parentID: type: string format: uuid example: 19a4f165-8233-426b-a1a4-e569665a25dd description: Parent of the account for a tree-like account structure. Only the root account does not have a parent ID. createdAt: type: string format: date-time description: Specifies when the account was created. updatedAt: type: string format: date-time description: Specifies when the account was updated. systemsCount: type: integer description: SystemCount is the number of systems assigned to this account example: 1 kind: type: string readOnly: true enum: - b2b - end-user description: If b2b, the account is a regular account. If end-user, the account is a customer account which contains just one user. x-readme-ref-name: AccountKind mainAddress: title: Address description: Represents a physical address of a customer. allOf: - type: object properties: city: description: The city of the location. type: string example: Aachen country: description: The country of the location. type: string example: Germany addressLine1: description: 'First line of the location''s address, typically containing the main information such as the street name and house number. ' type: string example: Oppenhoffallee 143 addressLine2: description: 'Second line of the location''s address, typically containing additional information such as apartment numbers, suite numbers, or other details that can help in identifying the exact location of the address. ' type: string addressLine3: description: 'Third line of the location''s address, typically containing any other details that can help in identifying the exact location of the address. ' type: string addressLine4: description: 'Fourth line of the location''s address, typically containing any other details that can help in identifying the exact location of the address. ' type: string timeZone: description: The TZ Identifier of the location's timezone. type: string example: Europe/Berlin readOnly: true x-readme-ref-name: InventoryAbstractLocation - type: object properties: postalcode: description: The postal code of the location. type: string example: '52062' region: description: The region of the address. type: string telephone: description: The telephone number of the customer. type: string x-readme-ref-name: InventoryAddress customization: description: Customization can be used to store arbitrary data. required: - id - createdAt - updatedAt x-readme-ref-name: InventoryAccount readOnly: true x-readme-ref-name: EmbeddedAccounts - properties: productOption: type: object allOf: - title: Product Option description: 'A product option describes a set of features whose access should be restricted from or granted to users of a system. Systems can be assigned a product option to manage their access to these features. This is the base type for the more concrete usages and not used directly within operations. ' type: object properties: name: type: string description: Name of the product option. example: Default Product Option description: type: string description: Describes the purpose of the product option. x-readme-ref-name: AbstractProductOption - properties: id: description: Unique identifier of the product option. type: string format: uuid example: d5166f02-8b56-4200-90bd-35d3d17391b4 accountID: description: Unique identifier of the account that owns the product option. type: string format: uuid example: d73b6749-2c32-4bca-ab73-50d8e3744edf isDefault: type: boolean description: Indicates whether the product option should be assigned by default to all systems of the owning account. functionalities: description: The default functionalities that a product option restricts access to. Deprecated - Use `showFunctionalities` and `hideFunctionalities` instead. type: array readOnly: true deprecated: true items: type: object allOf: - description: 'A product functionality describes a feature. It is used to manage access to this feature via product options. This is the base type for the more concrete usages and not used directly within operations. ' type: object properties: name: type: string maxLength: 256 description: Name of the product functionality. example: EV Manager hide: type: boolean description: Indicates whether the product functionality should be hidden or shown. description: type: string description: Describes the purpose of the product functionality. x-readme-ref-name: AbstractProductFunctionality - properties: id: description: Unique identifier of the product functionality. type: string format: uuid example: 4e3392ce-ed94-4946-8a11-665e0443723e required: - id - name - hide x-readme-ref-name: ProductFunctionality hideFunctionalities: readOnly: true description: The default functionalities that a product option restricts access to. Must be of type `hide=true`. type: array items: type: object allOf: - description: 'A product functionality describes a feature. It is used to manage access to this feature via product options. This is the base type for the more concrete usages and not used directly within operations. ' type: object properties: name: type: string maxLength: 256 description: Name of the product functionality. example: EV Manager hide: type: boolean description: Indicates whether the product functionality should be hidden or shown. description: type: string description: Describes the purpose of the product functionality. x-readme-ref-name: AbstractProductFunctionality - properties: id: description: Unique identifier of the product functionality. type: string format: uuid example: 4e3392ce-ed94-4946-8a11-665e0443723e required: - id - name - hide x-readme-ref-name: ProductFunctionality showFunctionalities: readOnly: true description: The extra functionalities that a product option grants access to. Must be of type `hide=false`. type: array items: type: object allOf: - description: 'A product functionality describes a feature. It is used to manage access to this feature via product options. This is the base type for the more concrete usages and not used directly within operations. ' type: object properties: name: type: string maxLength: 256 description: Name of the product functionality. example: EV Manager hide: type: boolean description: Indicates whether the product functionality should be hidden or shown. description: type: string description: Describes the purpose of the product functionality. x-readme-ref-name: AbstractProductFunctionality - properties: id: description: Unique identifier of the product functionality. type: string format: uuid example: 4e3392ce-ed94-4946-8a11-665e0443723e required: - id - name - hide x-readme-ref-name: ProductFunctionality required: - id - accountID - name - isDefault - functionalities - hideFunctionalities - showFunctionalities x-readme-ref-name: ProductOption productOptionUpdatedAt: description: Time at which the system's product option was last changed in RFC3339 format. type: string format: date-time readOnly: true example: '2009-11-10T23:20:50Z' required: - id - name - createdAt - updatedAt x-readme-ref-name: System - properties: users: description: 'The users belonging to this system. Only set if `embed` query parameter includes `user`. ' type: array readOnly: true items: type: object properties: id: description: Unique identifier of the user. type: string format: uuid example: 43a4f165-8233-426b-a1a4-e569665a25dd readOnly: true accountID: description: Unique identifier of the account that the user belongs to. type: string format: uuid example: 6dd0a658-5828-4d30-bc65-a03c6d6e425f readOnly: true newPassword: description: Used to set a new password for the user. type: string writeOnly: true loginsCount: description: Number of user logins. type: integer readOnly: true mfaEnabled: description: Indicates whether MFA (Multi-Factor Authentication) is enabled. type: boolean readOnly: true mfaReset: description: Can be set to true if MFA (Multi-Factor Authentication) needs to to be reset. This will remove the MFA. type: boolean writeOnly: true createdAt: description: Time at which the user was created in UTC using the RFC3339 format. type: string format: date-time example: '2009-11-10T23:20:50Z' readOnly: true updatedAt: description: Time at which the user was last updated in UTC using the RFC3339 format. type: string format: date-time example: '2009-11-10T23:20:50Z' readOnly: true fullName: description: Full name of the user typically consisting of first name and last name. type: string example: John Doe email: description: The email address of the user that is used for login. type: string format: email example: john@doe.com groups: description: Policy groups attached to this user which determine the effective permissions through policies. type: array items: title: Policy Group type: object allOf: - title: Policy Group description: 'A policy group describes the permissions of a group. This is the base type for the more concrete usages and not used directly within operations. ' type: object properties: name: type: string description: Name of the policy group. example: group name description: type: string description: Description of the group, omitted if empty example: Group provides read-access to accounts x-readme-ref-name: AbstractPolicyGroup - properties: id: type: string format: uuid description: Unique identifier of the policy group. example: 97874c1b-d073-4b06-bf01-a1497fbe1146 readOnly: true accountID: type: string format: uuid description: Unique identifier of the creator account. example: 97874c1b-d073-4b06-bf01-a1497fbe1146 readOnly: true createdAt: description: Time at which the policy group was created in UTC (RFC 3339 format). type: string format: date-time example: '2019-11-06T15:33:00Z' readOnly: true updatedAt: description: Time at which the policy group was last updated in UTC (RFC 3339 format). type: string format: date-time example: '2019-11-08T23:20:50Z' readOnly: true userCount: type: integer description: Amount of users that are in this group. example: 10 readOnly: true required: - id - name - accountID - createdAt - updatedAt x-readme-ref-name: PolicyGroup mainAddress: title: Address description: Represents a physical address of a customer. allOf: - type: object properties: city: description: The city of the location. type: string example: Aachen country: description: The country of the location. type: string example: Germany addressLine1: description: 'First line of the location''s address, typically containing the main information such as the street name and house number. ' type: string example: Oppenhoffallee 143 addressLine2: description: 'Second line of the location''s address, typically containing additional information such as apartment numbers, suite numbers, or other details that can help in identifying the exact location of the address. ' type: string addressLine3: description: 'Third line of the location''s address, typically containing any other details that can help in identifying the exact location of the address. ' type: string addressLine4: description: 'Fourth line of the location''s address, typically containing any other details that can help in identifying the exact location of the address. ' type: string timeZone: description: The TZ Identifier of the location's timezone. type: string example: Europe/Berlin readOnly: true x-readme-ref-name: InventoryAbstractLocation - type: object properties: postalcode: description: The postal code of the location. type: string example: '52062' region: description: The region of the address. type: string telephone: description: The telephone number of the customer. type: string x-readme-ref-name: InventoryAddress language: title: Language description: The language information of the user. type: object required: - tag - name - nameNative properties: tag: type: string description: 'Tag is the IETF language tag''s primary identifier for this language. See [here](https://tools.ietf.org/rfc/bcp/bcp47.txt) and the example below for more information. ' example: de_DE name: type: string description: The name of the language in English. example: German readOnly: true nameNative: type: string description: The name of the language in the language itself. example: Deutsch readOnly: true x-readme-ref-name: SystemUserLanguage required: - auth - id - email - createdAt - updatedAt x-readme-ref-name: SystemUser x-readme-ref-name: SystemWithUsers '403': description: Forbidden. content: application/vnd.gridx.v2+json: schema: readOnly: true allOf: - title: General Exception description: Represents a general error structure returned by our REST API. type: object properties: message: type: string description: Message represents the message reported to the user. details: type: array description: 'Details represents detail information for the user to fix this problem ' items: type: string required: - message x-readme-ref-name: GeneralException - title: UnauthorizedError - Forbidden Error description: Forbidden Error example: message: Bad credentials x-readme-ref-name: ForbiddenException '500': description: There has been an internal error on our side. We're looking into it. content: application/vnd.gridx.v2+json: schema: readOnly: true allOf: - title: General Exception description: Represents a general error structure returned by our REST API. type: object properties: message: type: string description: Message represents the message reported to the user. details: type: array description: 'Details represents detail information for the user to fix this problem ' items: type: string required: - message x-readme-ref-name: GeneralException - title: ServerSideError - Internal Server Error description: Internal Server Error example: message: Internal Server Error x-readme-ref-name: InternalException security: - HeaderAuth: - SystemsRead x-code-samples: - lang: python label: Python source: 'import requests url = "https://api.gridx.de/systems" headers = {"accept": "application/vnd.gridx.v2+json"} response = requests.get(url, headers=headers) print(response.text)' - lang: shell label: Shell source: "curl --request GET \\\n --url https://api.gridx.de/systems \\\n --header 'accept: application/vnd.gridx.v2+json'" - lang: go label: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io\"\n)\n\nfunc main() {\n\n\turl := \"https://api.gridx.de/systems\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"accept\", \"application/vnd.gridx.v2+json\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := io.ReadAll(res.Body)\n\n\tfmt.Println(string(body))\n\n}" - lang: javascript label: Javascript source: "const options = {method: 'GET', headers: {accept: 'application/vnd.gridx.v2+json'}};\n\nfetch('https://api.gridx.de/systems', options)\n .then(res => res.json())\n .then(res => console.log(res))\n .catch(err => console.error(err));" - lang: java label: Java source: "OkHttpClient client = new OkHttpClient();\n\nRequest request = new Request.Builder()\n .url(\"https://api.gridx.de/systems\")\n .get()\n .addHeader(\"accept\", \"application/vnd.gridx.v2+json\")\n .build();\n\nResponse response = client.newCall(request).execute();" - lang: java label: Kotlin source: "val client = OkHttpClient()\n\nval request = Request.Builder()\n .url(\"https://api.gridx.de/systems\")\n .get()\n .addHeader(\"accept\", \"application/vnd.gridx.v2+json\")\n .build()\n\nval response = client.newCall(request).execute()" - lang: javascript label: Swift source: 'import Foundation let url = URL(string: "https://api.gridx.de/systems")! var request = URLRequest(url: url) request.httpMethod = "GET" request.timeoutInterval = 10 request.allHTTPHeaderFields = ["accept": "application/vnd.gridx.v2+json"] let (data, _) = try await URLSession.shared.data(for: request) print(String(decoding: data, as: UTF8.self))' - lang: csharp label: C# source: 'using RestSharp; var options = new RestClientOptions("https://api.gridx.de/systems"); var client = new RestClient(options); var request = new RestRequest(""); request.AddHeader("accept", "application/vnd.gridx.v2+json"); var response = await client.GetAsync(request); Console.WriteLine("{0}", response.Content); ' post: operationId: createSystem summary: Create a System description: Creates a System. tags: - System parameters: [] requestBody: description: The body of a system creation request. required: true content: application/json: schema: allOf: - type: object allOf: - title: System description: "A System represents the logical view of one gateway and its appliances.\n\nFor example, a household can be represented as a system with a gateway such as a \ngridBox, and its connected appliances.\n" properties: name: type: - string - 'null' maxLength: 200 description: Name of the System. example: gridX Headquarter solution: type: string description: "Represents the solution that the system uses:\n- HOME if the system is for a household. \n- CHARGE if the system is for charging station fleet management.\n" x-extensible-enum: - HOME - CHARGE - GENERAL - SMART_DISTRICT - MICROGRID - HOME_VIRTUAL_METERING - COMMERCIAL - CUSTOM_P2P x-readme-ref-name: SystemSolution priorities: description: Allows prioritisation of EMS functionalities by appliance type. Accepted values are ["BATTERY", "EV", "HEATPUMP", "HEATER"]. type: array items: type: string example: - EV - BATTERY appliancePriorities: type: array description: 'Allows prioritisation of EMS functionalities by appliance UUIDs. This option takes precendence over `priorities` field as it is more explicit. ' items: type: string format: uuid plan: description: "Charge plan of the system. Must be one of two possible options: \n * `2020_DLM_EVS_00` - Use this value for Dynamic Load Management.\n * `2020_SLM_EVS_00` - Use this value for Static Load Management.\n" type: string x-extensible-enum: - 2020_DLM_EVS_00 - 2020_SLM_EVS_00 x-readme-ref-name: SystemChargePlan operatingSince: type: string format: date-time description: Date since when the system is active in RFC3339 format. example: '2017-12-23T10:15:40Z' curtailmentStrategy: type: string deprecated: true description: "Deprecated: Only EQUALLY remains available and future implementations will likely use another field name.\nThe curtailment strategy describes how appliances shall be curtailed.\n * EQUALLY: Every appliance gets equally (fair) curtailed.\n" x-extensible-enum: - EQUALLY x-readme-ref-name: SystemCurtailmentStrategy location: title: Location description: Represents a GPS location with longitude and latitude. type: object allOf: - type: object properties: city: description: The city of the location. type: string example: Aachen country: description: The country of the location. type: string example: Germany addressLine1: description: 'First line of the location''s address, typically containing the main information such as the street name and house number. ' type: string example: Oppenhoffallee 143 addressLine2: description: 'Second line of the location''s address, typically containing additional information such as apartment numbers, suite numbers, or other details that can help in identifying the exact location of the address. ' type: string addressLine3: description: 'Third line of the location''s address, typically containing any other details that can help in identifying the exact location of the address. ' type: string addressLine4: description: 'Fourth line of the location''s address, typically containing any other details that can help in identifying the exact location of the address. ' type: string timeZone: description: The TZ Identifier of the location's timezone. type: string example: Europe/Berlin readOnly: true x-readme-ref-name: InventoryAbstractLocation - type: object properties: country: deprecated: true description: 'Deprecated - Instead of this freeform text field, use countryCode ' countryCode: type: string description: Country code in ISO 3166-1 alpha-2. example: DE enum: - AF - AX - AL - DZ - AS - AD - AO - AI - AQ - AG - AR - AM - AW - AU - AT - AZ - BS - BH - BD - BB - BY - BE - BZ - BJ - BM - BT - BO - BQ - BA - BW - BV - BR - IO - BN - BG - BF - BI - CV - KH - CM - CA - KY - CF - TD - CL - CN - CX - CC - CO - KM - CG - CD - CK - CR - CI - HR - CU - CW - CY - CZ - DK - DJ - DM - DO - EC - EG - SV - GQ - ER - EE - SZ - ET - FK - FO - FJ - FI - FR - GF - PF - TF - GA - GM - GE - DE - GH - GI - GR - GL - GD - GP - GU - GT - GG - GN - GW - GY - HT - HM - VA - HN - HK - HU - IS - IN - ID - IR - IQ - IE - IM - IL - IT - JM - JP - JE - JO - KZ - KE - KI - KP - KR - KW - KG - LA - LV - LB - LS - LR - LY - LI - LT - LU - MO - MG - MW - MY - MV - ML - MT - MH - MQ - MR - MU - YT - MX - FM - MD - MC - MN - ME - MS - MA - MZ - MM - NA - NR - NP - NL - NC - NZ - NI - NE - NG - NU - NF - MK - MP - 'NO' - OM - PK - PW - PS - PA - PG - PY - PE - PH - PN - PL - PT - PR - QA - RE - RO - RU - RW - BL - SH - KN - LC - MF - PM - VC - WS - SM - ST - SA - SN - RS - SC - SL - SG - SX - SK - SI - SB - SO - ZA - GS - SS - ES - LK - SD - SR - SJ - SE - CH - SY - TW - TJ - TZ - TH - TL - TG - TK - TO - TT - TN - TR - TM - TC - TV - UG - UA - AE - GB - US - UM - UY - UZ - VU - VE - VN - VG - VI - WF - EH - YE - ZM - ZW x-readme-ref-name: LocationCountryCode postalCode: description: The postal code of the location. type: string example: '52062' longitude: description: The geographic coordinate that specifies the east–west position of the location. type: number example: 6.09294299 readOnly: true latitude: description: The geographic coordinate that specifies the north–south position of the location. type: number example: 50.77441934 readOnly: true x-readme-ref-name: Location metadata: title: Metadata description: Represents system's metadata. type: object properties: wizard: title: Wizard type: object description: Represents the metadata to keep track of the current wizard step. required: - step properties: step: description: Represents the current wizard step. type: string x-extensible-enum: - WELCOME - STARTCODE - GRIDBOX_STATUS - SYSTEM_TYPE_SELECT - ACCOUNT_ASSIGNMENT - PERSONAL_INFORMATION - SYSTEM_OVERVIEW - SYSTEM_CHILDREN_SETUP - SYSTEM_SETUP - PARAGRAPH_14A - ENERGYMANAGEMENT - HEATING_ROD - ENERGYMANAGEMENT_ACTIVATION - ENERGY_SUPPLIER - SYSTEM_CHECK - DONE - ELECTRICITY_TARIFF_V2 - KOSTAL_CONFIGURATION - ENPHASE_CONNECTION - EEBUS_PAIRING - SONNEN_CONNECTION - IO_DEVICE_CONFIGURATION - IO_DEVICE_HEAT_PUMP_CONFIGURATION - TROUBLESHOOT_INSTALLATION - INSTALLER_HUB - ENA_G100 - PV_SYSTEM - FUSE_PROTECTION - ENERGY_OPTIMIZATION - UNKNOWN firstCompletedAt: description: Represents the date and time when the final wizard step was completed first time. type: string format: date-time readOnly: true example: '2025-06-22T00:00:00Z' version: description: Represents the version of wizard. type: integer x-extensible-enum: - 1 - 2 - 3 x-readme-ref-name: MetadataWizard energy: title: Energy Metadata type: object description: represents the metadata related to the energy use case. properties: installer: type: - string - 'null' description: Installer is the person who has installed the systems. norminalPower: type: - number - 'null' minimum: 0 description: 'The system''s maximal power production in W (for historical reasons the word "norminal" is used instead of the correct term "nominal power"). *Deprecated* - Use `nominalPower` instead (in mW!). ' deprecated: true nominalPower: type: - number - 'null' minimum: 0 description: The system's maximal power production in mW. 0 is used if unset. curtailment: type: - number - 'null' description: Curtailment is the percentage of system's nominal power at which the pv inverters should stop feeding into the grid. (0-1) heatingSystem: type: - string - 'null' description: HeatingSystem represents the type of the heating system. agreedEMSTerms: type: - boolean - 'null' deprecated: true description: 'AgreedEMSTerms indicates if the customers accepts the ems terms. *Deprecated* - Use `MetadataEMS.agreedEMSTerms` instead. ' ems: title: MetadataEMS type: object description: MetadataEMS represents the energy management allowances. properties: agreedEMSTerms: type: - boolean - 'null' description: AgreedEMSTerms indicates if the customers accepts the ems terms. enabledEMS: type: - boolean - 'null' description: EnabledEMS indicates if gridBox should activate the ems. agreedDynamicPVControlTerms: type: - boolean - 'null' description: AgreedDynamicPVControlTerms indicates if the customer accepts the dynamic pc control terms. enabledDynamicPVControl: type: - boolean - 'null' description: EnabledDynamicPVControl indicates if the gridBox should activate the dynamic pv control. enabledInverterGCPControl: type: - boolean - 'null' description: 'EnabledInverterGCPControl indicates if the gridBox should activate the inverter gcp control. *Deprecated* - This is automatically detected by the gridbox. If this field is unset or false, the gridbox will determine inverter GCP control activation automatically. ' deprecated: true agreedForecastBasedEMSTerms: type: - boolean - 'null' description: '*Deprecated* Feature is deprecated and will be removed in a future release. ' deprecated: true enabledForecastBasedEMS: type: - boolean - 'null' description: '*Deprecated* Feature is deprecated and will be removed in a future release. ' deprecated: true agreedPriorityConfigurationTerms: type: - boolean - 'null' description: AgreedPriorityConfigurationTerms indicates if the customer accepts the priority configuration terms. enabledPriorityConfiguration: type: - boolean - 'null' description: EnabledPriorityConfiguration indicates if the gridBox should activate the priority configuration. agreedPowerManagementTerms: type: - boolean - 'null' description: AgreedPowerManagementTerms indicates if the customer accepts the power management terms. enabledPowerManagement: type: - boolean - 'null' description: EnabledPowerManagement indicates if the gridBox should activate the power management. enabledStaticPowerManagement: type: - boolean - 'null' description: EnabledStaticPowerManagement indicates if the gridBox should activate the static power management. enabledPowerImportPeakOptimization: type: - boolean - 'null' description: EnabledPowerImportPeakOptimization indicates if the gridBox should activate the 15min avg. energy optimization algorithm. powerImportPeakPerOptimizationInterval: type: - number - 'null' format: double deprecated: true description: 'Describes the amount of imported energy in a 15 minutes interval in VA. Deprecated: Use powerImportPeakPerOptimizationIntervalmVA instead. ' powerImportPeakPerOptimizationIntervalmVA: type: - number - 'null' format: double description: Defines the average power in a 15 minute interval in mVA for peak shaving. enabledBatteryFullGridCharge: type: - boolean - 'null' description: '*Deprecated* Feature is deprecated and will be removed in a future release. The default behaviour is to always allow charging with full power and the setting is not required anymore. ' deprecated: true enabledLessConstrainingSOCLimits: type: - boolean - 'null' description: '*Deprecated* Feature is deprecated and will be removed in a future release. ' deprecated: true derAPISettings: title: DerAPISettings type: object description: DerAPISettings represents the metadata related to DER API configuration. properties: enabledCloudAPI: type: - boolean - 'null' description: EnabledCloudAPI enables assets control with cloud DER API. constraints: title: SyncEntitySettings type: object description: SyncEntitySettings configures entity synchronisation parameters. properties: syncInterval: type: - number - 'null' format: double description: SyncInterval defines the period in seconds for data to be synchronized between gridBox and cloud DER API. ttl: type: - number - 'null' format: double description: TTL defines the time to live in seconds for entity. disabled: type: boolean description: Disabled disables the sync of entities. x-readme-ref-name: SyncEntitySettings flexibilities: title: SyncEntitySettings type: object description: SyncEntitySettings configures entity synchronisation parameters. properties: syncInterval: type: - number - 'null' format: double description: SyncInterval defines the period in seconds for data to be synchronized between gridBox and cloud DER API. ttl: type: - number - 'null' format: double description: TTL defines the time to live in seconds for entity. disabled: type: boolean description: Disabled disables the sync of entities. x-readme-ref-name: SyncEntitySettings x-readme-ref-name: DerAPISettings enabledTimeOfUseOptimization: deprecated: true type: - boolean - 'null' description: 'Indicates if time of use optimization is enabled for the system. *Deprecated* - Use `systems/{systemID}/timeofuse/options` endpoint instead. ' disableAveragePmaxCalculation: type: - boolean - 'null' description: Disables the average pMax calculation. It means EMS will not calculate average pMax and will get the default value instead. excludeApplianceTypes: description: Appliance types to be ignored by the EMS. Updating this field to an empty array clears it. **Please note that this currently requires the box to be restarted to take effect**. type: - array - 'null' items: type: string x-extensible-enum: - HEAT_PUMP evChargingReallocationTolerance: description: Specifies the maximum power in mW that can be drawn to charge an EV in case the PV surplus is not sufficient. type: - number - 'null' format: double example: 500000 enabledPowerWindowHysteresis: description: Configures the system to use the power window hysteresis feature. If unset, the system will behave as if this was activated. Set to false to deactivate. type: - boolean - 'null' x-readme-ref-name: MetadataEMS smartMeterInstallationTimestamp: description: The time the smart meter has been installed (if any), in RFC3339 format. type: - string - 'null' format: date-time example: '2020-09-21T00:00:00Z' x-readme-ref-name: MetadataEnergy energySupplier: title: Energy Supplier type: object description: MetadataEnergySupplier represents the metadata related to energy supplier. properties: type: type: - string - 'null' deprecated: true description: Type determines if gridX is the energy supplier. The value is either "GRIDX" or "OTHER". enum: - GRIDX - OTHER unitPrice: type: - number - 'null' description: UnitPrice is unit price per kWh in EU cent. Deprecated - Use TariffV2 instead. deprecated: true installment: type: - number - 'null' description: Installment is the monthly payment. baseFee: type: - number - 'null' description: BaseFee is the monthly base fee. feedInTariff: type: - number - 'null' description: FeedInTariff is the cost-based compensation in EUR cent for feeding in. Deprecated - Use TariffV2 instead. deprecated: true expectedConsumption: type: - number - 'null' description: ExpectedConsumption is the expected annual consumption in kWh. x-readme-ref-name: MetadataEnergySupplier smartMeter: title: Smart Meter description: Represents the metadata to report if a smart meter has been installed. type: object properties: installed: type: - boolean - 'null' description: Reports if the smart meter has been installed. hasInstallationDate: type: - boolean - 'null' description: Reports if the provider has sent us a installation date that can be found in energy metadata. x-readme-ref-name: MetadataSmartMeter x-readme-ref-name: SystemMetadata x-readme-ref-name: AbstractSystem - type: object properties: appliancePriorities: readOnly: true priorities: readOnly: true location: title: Location description: "Represents a GPS location with longitude and latitude.\n\nYou can set a location either by providing an address (`addressLine1`, `city`,\n`postalCode`, `countryCode`, etc.) or by providing `latitude`/`longitude`\ndirectly, or both:\n * If `latitude`/`longitude` are provided, they are stored as given.\n * If only an address is provided, `latitude`/`longitude` are automatically\n derived from it via geocoding.\n * If both are provided, the given `latitude`/`longitude` are stored as-is\n and the address is **not** geocoded to overwrite them.\n\nNote that the reverse does not happen: providing only `latitude`/`longitude`\ndoes not populate the address fields, only `timeZone` is derived from the\ncoordinates.\n" type: object allOf: - type: object properties: city: description: The city of the location. type: string example: Aachen country: description: The country of the location. type: string example: Germany addressLine1: description: 'First line of the location''s address, typically containing the main information such as the street name and house number. ' type: string example: Oppenhoffallee 143 addressLine2: description: 'Second line of the location''s address, typically containing additional information such as apartment numbers, suite numbers, or other details that can help in identifying the exact location of the address. ' type: string addressLine3: description: 'Third line of the location''s address, typically containing any other details that can help in identifying the exact location of the address. ' type: string addressLine4: description: 'Fourth line of the location''s address, typically containing any other details that can help in identifying the exact location of the address. ' type: string timeZone: description: The TZ Identifier of the location's timezone. type: string example: Europe/Berlin readOnly: true x-readme-ref-name: InventoryAbstractLocation - type: object properties: country: deprecated: true description: 'Deprecated - Instead of this freeform text field, use countryCode ' countryCode: type: string description: Country code in ISO 3166-1 alpha-2. example: DE enum: - AF - AX - AL - DZ - AS - AD - AO - AI - AQ - AG - AR - AM - AW - AU - AT - AZ - BS - BH - BD - BB - BY - BE - BZ - BJ - BM - BT - BO - BQ - BA - BW - BV - BR - IO - BN - BG - BF - BI - CV - KH - CM - CA - KY - CF - TD - CL - CN - CX - CC - CO - KM - CG - CD - CK - CR - CI - HR - CU - CW - CY - CZ - DK - DJ - DM - DO - EC - EG - SV - GQ - ER - EE - SZ - ET - FK - FO - FJ - FI - FR - GF - PF - TF - GA - GM - GE - DE - GH - GI - GR - GL - GD - GP - GU - GT - GG - GN - GW - GY - HT - HM - VA - HN - HK - HU - IS - IN - ID - IR - IQ - IE - IM - IL - IT - JM - JP - JE - JO - KZ - KE - KI - KP - KR - KW - KG - LA - LV - LB - LS - LR - LY - LI - LT - LU - MO - MG - MW - MY - MV - ML - MT - MH - MQ - MR - MU - YT - MX - FM - MD - MC - MN - ME - MS - MA - MZ - MM - NA - NR - NP - NL - NC - NZ - NI - NE - NG - NU - NF - MK - MP - 'NO' - OM - PK - PW - PS - PA - PG - PY - PE - PH - PN - PL - PT - PR - QA - RE - RO - RU - RW - BL - SH - KN - LC - MF - PM - VC - WS - SM - ST - SA - SN - RS - SC - SL - SG - SX - SK - SI - SB - SO - ZA - GS - SS - ES - LK - SD - SR - SJ - SE - CH - SY - TW - TJ - TZ - TH - TL - TG - TK - TO - TT - TN - TR - TM - TC - TV - UG - UA - AE - GB - US - UM - UY - UZ - VU - VE - VN - VG - VI - WF - EH - YE - ZM - ZW x-readme-ref-name: LocationCountryCode postalCode: description: The postal code of the location. type: string example: '52062' longitude: description: 'The geographic coordinate that specifies the east–west position of the location. Can be set directly, or derived automatically from the address fields if omitted. ' type: number example: 6.09294299 latitude: description: 'The geographic coordinate that specifies the north–south position of the location. Can be set directly, or derived automatically from the address fields if omitted. ' type: number example: 50.77441934 x-readme-ref-name: WriteLocation x-readme-ref-name: SystemCreate - additionalProperties: false x-readme-ref-name: SystemCreateStrict responses: '200': description: The created system. content: application/vnd.gridx.v2+json: schema: title: System description: "A System represents the logical view of one gateway and its appliances.\n\nFor example, a household can be represented as a system with a gateway such as a \ngridBox, and its connected appliances.\n" allOf: - title: System description: "A System represents the logical view of one gateway and its appliances.\n \nFor example, a household can be represented as a system with a gateway such as a \ngridBox, and its connected appliances.\n" type: object allOf: - title: System description: "A System represents the logical view of one gateway and its appliances.\n\nFor example, a household can be represented as a system with a gateway such as a \ngridBox, and its connected appliances.\n" properties: name: type: - string - 'null' maxLength: 200 description: Name of the System. example: gridX Headquarter solution: type: string description: "Represents the solution that the system uses:\n- HOME if the system is for a household. \n- CHARGE if the system is for charging station fleet management.\n" x-extensible-enum: - HOME - CHARGE - GENERAL - SMART_DISTRICT - MICROGRID - HOME_VIRTUAL_METERING - COMMERCIAL - CUSTOM_P2P x-readme-ref-name: SystemSolution priorities: description: Allows prioritisation of EMS functionalities by appliance type. Accepted values are ["BATTERY", "EV", "HEATPUMP", "HEATER"]. type: array items: type: string example: - EV - BATTERY appliancePriorities: type: array description: 'Allows prioritisation of EMS functionalities by appliance UUIDs. This option takes precendence over `priorities` field as it is more explicit. ' items: type: string format: uuid plan: description: "Charge plan of the system. Must be one of two possible options: \n * `2020_DLM_EVS_00` - Use this value for Dynamic Load Management.\n * `2020_SLM_EVS_00` - Use this value for Static Load Management.\n" type: string x-extensible-enum: - 2020_DLM_EVS_00 - 2020_SLM_EVS_00 x-readme-ref-name: SystemChargePlan operatingSince: type: string format: date-time description: Date since when the system is active in RFC3339 format. example: '2017-12-23T10:15:40Z' curtailmentStrategy: type: string deprecated: true description: "Deprecated: Only EQUALLY remains available and future implementations will likely use another field name.\nThe curtailment strategy describes how appliances shall be curtailed.\n * EQUALLY: Every appliance gets equally (fair) curtailed.\n" x-extensible-enum: - EQUALLY x-readme-ref-name: SystemCurtailmentStrategy location: title: Location description: Represents a GPS location with longitude and latitude. type: object allOf: - type: object properties: city: description: The city of the location. type: string example: Aachen country: description: The country of the location. type: string example: Germany addressLine1: description: 'First line of the location''s address, typically containing the main information such as the street name and house number. ' type: string example: Oppenhoffallee 143 addressLine2: description: 'Second line of the location''s address, typically containing additional information such as apartment numbers, suite numbers, or other details that can help in identifying the exact location of the address. ' type: string addressLine3: description: 'Third line of the location''s address, typically containing any other details that can help in identifying the exact location of the address. ' type: string addressLine4: description: 'Fourth line of the location''s address, typically containing any other details that can help in identifying the exact location of the address. ' type: string timeZone: description: The TZ Identifier of the location's timezone. type: string example: Europe/Berlin readOnly: true x-readme-ref-name: InventoryAbstractLocation - type: object properties: country: deprecated: true description: 'Deprecated - Instead of this freeform text field, use countryCode ' countryCode: type: string description: Country code in ISO 3166-1 alpha-2. example: DE enum: - AF - AX - AL - DZ - AS - AD - AO - AI - AQ - AG - AR - AM - AW - AU - AT - AZ - BS - BH - BD - BB - BY - BE - BZ - BJ - BM - BT - BO - BQ - BA - BW - BV - BR - IO - BN - BG - BF - BI - CV - KH - CM - CA - KY - CF - TD - CL - CN - CX - CC - CO - KM - CG - CD - CK - CR - CI - HR - CU - CW - CY - CZ - DK - DJ - DM - DO - EC - EG - SV - GQ - ER - EE - SZ - ET - FK - FO - FJ - FI - FR - GF - PF - TF - GA - GM - GE - DE - GH - GI - GR - GL - GD - GP - GU - GT - GG - GN - GW - GY - HT - HM - VA - HN - HK - HU - IS - IN - ID - IR - IQ - IE - IM - IL - IT - JM - JP - JE - JO - KZ - KE - KI - KP - KR - KW - KG - LA - LV - LB - LS - LR - LY - LI - LT - LU - MO - MG - MW - MY - MV - ML - MT - MH - MQ - MR - MU - YT - MX - FM - MD - MC - MN - ME - MS - MA - MZ - MM - NA - NR - NP - NL - NC - NZ - NI - NE - NG - NU - NF - MK - MP - 'NO' - OM - PK - PW - PS - PA - PG - PY - PE - PH - PN - PL - PT - PR - QA - RE - RO - RU - RW - BL - SH - KN - LC - MF - PM - VC - WS - SM - ST - SA - SN - RS - SC - SL - SG - SX - SK - SI - SB - SO - ZA - GS - SS - ES - LK - SD - SR - SJ - SE - CH - SY - TW - TJ - TZ - TH - TL - TG - TK - TO - TT - TN - TR - TM - TC - TV - UG - UA - AE - GB - US - UM - UY - UZ - VU - VE - VN - VG - VI - WF - EH - YE - ZM - ZW x-readme-ref-name: LocationCountryCode postalCode: description: The postal code of the location. type: string example: '52062' longitude: description: The geographic coordinate that specifies the east–west position of the location. type: number example: 6.09294299 readOnly: true latitude: description: The geographic coordinate that specifies the north–south position of the location. type: number example: 50.77441934 readOnly: true x-readme-ref-name: Location metadata: title: Metadata description: Represents system's metadata. type: object properties: wizard: title: Wizard type: object description: Represents the metadata to keep track of the current wizard step. required: - step properties: step: description: Represents the current wizard step. type: string x-extensible-enum: - WELCOME - STARTCODE - GRIDBOX_STATUS - SYSTEM_TYPE_SELECT - ACCOUNT_ASSIGNMENT - PERSONAL_INFORMATION - SYSTEM_OVERVIEW - SYSTEM_CHILDREN_SETUP - SYSTEM_SETUP - PARAGRAPH_14A - ENERGYMANAGEMENT - HEATING_ROD - ENERGYMANAGEMENT_ACTIVATION - ENERGY_SUPPLIER - SYSTEM_CHECK - DONE - ELECTRICITY_TARIFF_V2 - KOSTAL_CONFIGURATION - ENPHASE_CONNECTION - EEBUS_PAIRING - SONNEN_CONNECTION - IO_DEVICE_CONFIGURATION - IO_DEVICE_HEAT_PUMP_CONFIGURATION - TROUBLESHOOT_INSTALLATION - INSTALLER_HUB - ENA_G100 - PV_SYSTEM - FUSE_PROTECTION - ENERGY_OPTIMIZATION - UNKNOWN firstCompletedAt: description: Represents the date and time when the final wizard step was completed first time. type: string format: date-time readOnly: true example: '2025-06-22T00:00:00Z' version: description: Represents the version of wizard. type: integer x-extensible-enum: - 1 - 2 - 3 x-readme-ref-name: MetadataWizard energy: title: Energy Metadata type: object description: represents the metadata related to the energy use case. properties: installer: type: - string - 'null' description: Installer is the person who has installed the systems. norminalPower: type: - number - 'null' minimum: 0 description: 'The system''s maximal power production in W (for historical reasons the word "norminal" is used instead of the correct term "nominal power"). *Deprecated* - Use `nominalPower` instead (in mW!). ' deprecated: true nominalPower: type: - number - 'null' minimum: 0 description: The system's maximal power production in mW. 0 is used if unset. curtailment: type: - number - 'null' description: Curtailment is the percentage of system's nominal power at which the pv inverters should stop feeding into the grid. (0-1) heatingSystem: type: - string - 'null' description: HeatingSystem represents the type of the heating system. agreedEMSTerms: type: - boolean - 'null' deprecated: true description: 'AgreedEMSTerms indicates if the customers accepts the ems terms. *Deprecated* - Use `MetadataEMS.agreedEMSTerms` instead. ' ems: title: MetadataEMS type: object description: MetadataEMS represents the energy management allowances. properties: agreedEMSTerms: type: - boolean - 'null' description: AgreedEMSTerms indicates if the customers accepts the ems terms. enabledEMS: type: - boolean - 'null' description: EnabledEMS indicates if gridBox should activate the ems. agreedDynamicPVControlTerms: type: - boolean - 'null' description: AgreedDynamicPVControlTerms indicates if the customer accepts the dynamic pc control terms. enabledDynamicPVControl: type: - boolean - 'null' description: EnabledDynamicPVControl indicates if the gridBox should activate the dynamic pv control. enabledInverterGCPControl: type: - boolean - 'null' description: 'EnabledInverterGCPControl indicates if the gridBox should activate the inverter gcp control. *Deprecated* - This is automatically detected by the gridbox. If this field is unset or false, the gridbox will determine inverter GCP control activation automatically. ' deprecated: true agreedForecastBasedEMSTerms: type: - boolean - 'null' description: '*Deprecated* Feature is deprecated and will be removed in a future release. ' deprecated: true enabledForecastBasedEMS: type: - boolean - 'null' description: '*Deprecated* Feature is deprecated and will be removed in a future release. ' deprecated: true agreedPriorityConfigurationTerms: type: - boolean - 'null' description: AgreedPriorityConfigurationTerms indicates if the customer accepts the priority configuration terms. enabledPriorityConfiguration: type: - boolean - 'null' description: EnabledPriorityConfiguration indicates if the gridBox should activate the priority configuration. agreedPowerManagementTerms: type: - boolean - 'null' description: AgreedPowerManagementTerms indicates if the customer accepts the power management terms. enabledPowerManagement: type: - boolean - 'null' description: EnabledPowerManagement indicates if the gridBox should activate the power management. enabledStaticPowerManagement: type: - boolean - 'null' description: EnabledStaticPowerManagement indicates if the gridBox should activate the static power management. enabledPowerImportPeakOptimization: type: - boolean - 'null' description: EnabledPowerImportPeakOptimization indicates if the gridBox should activate the 15min avg. energy optimization algorithm. powerImportPeakPerOptimizationInterval: type: - number - 'null' format: double deprecated: true description: 'Describes the amount of imported energy in a 15 minutes interval in VA. Deprecated: Use powerImportPeakPerOptimizationIntervalmVA instead. ' powerImportPeakPerOptimizationIntervalmVA: type: - number - 'null' format: double description: Defines the average power in a 15 minute interval in mVA for peak shaving. enabledBatteryFullGridCharge: type: - boolean - 'null' description: '*Deprecated* Feature is deprecated and will be removed in a future release. The default behaviour is to always allow charging with full power and the setting is not required anymore. ' deprecated: true enabledLessConstrainingSOCLimits: type: - boolean - 'null' description: '*Deprecated* Feature is deprecated and will be removed in a future release. ' deprecated: true derAPISettings: title: DerAPISettings type: object description: DerAPISettings represents the metadata related to DER API configuration. properties: enabledCloudAPI: type: - boolean - 'null' description: EnabledCloudAPI enables assets control with cloud DER API. constraints: title: SyncEntitySettings type: object description: SyncEntitySettings configures entity synchronisation parameters. properties: syncInterval: type: - number - 'null' format: double description: SyncInterval defines the period in seconds for data to be synchronized between gridBox and cloud DER API. ttl: type: - number - 'null' format: double description: TTL defines the time to live in seconds for entity. disabled: type: boolean description: Disabled disables the sync of entities. x-readme-ref-name: SyncEntitySettings flexibilities: title: SyncEntitySettings type: object description: SyncEntitySettings configures entity synchronisation parameters. properties: syncInterval: type: - number - 'null' format: double description: SyncInterval defines the period in seconds for data to be synchronized between gridBox and cloud DER API. ttl: type: - number - 'null' format: double description: TTL defines the time to live in seconds for entity. disabled: type: boolean description: Disabled disables the sync of entities. x-readme-ref-name: SyncEntitySettings x-readme-ref-name: DerAPISettings enabledTimeOfUseOptimization: deprecated: true type: - boolean - 'null' description: 'Indicates if time of use optimization is enabled for the system. *Deprecated* - Use `systems/{systemID}/timeofuse/options` endpoint instead. ' disableAveragePmaxCalculation: type: - boolean - 'null' description: Disables the average pMax calculation. It means EMS will not calculate average pMax and will get the default value instead. excludeApplianceTypes: description: Appliance types to be ignored by the EMS. Updating this field to an empty array clears it. **Please note that this currently requires the box to be restarted to take effect**. type: - array - 'null' items: type: string x-extensible-enum: - HEAT_PUMP evChargingReallocationTolerance: description: Specifies the maximum power in mW that can be drawn to charge an EV in case the PV surplus is not sufficient. type: - number - 'null' format: double example: 500000 enabledPowerWindowHysteresis: description: Configures the system to use the power window hysteresis feature. If unset, the system will behave as if this was activated. Set to false to deactivate. type: - boolean - 'null' x-readme-ref-name: MetadataEMS smartMeterInstallationTimestamp: description: The time the smart meter has been installed (if any), in RFC3339 format. type: - string - 'null' format: date-time example: '2020-09-21T00:00:00Z' x-readme-ref-name: MetadataEnergy energySupplier: title: Energy Supplier type: object description: MetadataEnergySupplier represents the metadata related to energy supplier. properties: type: type: - string - 'null' deprecated: true description: Type determines if gridX is the energy supplier. The value is either "GRIDX" or "OTHER". enum: - GRIDX - OTHER unitPrice: type: - number - 'null' description: UnitPrice is unit price per kWh in EU cent. Deprecated - Use TariffV2 instead. deprecated: true installment: type: - number - 'null' description: Installment is the monthly payment. baseFee: type: - number - 'null' description: BaseFee is the monthly base fee. feedInTariff: type: - number - 'null' description: FeedInTariff is the cost-based compensation in EUR cent for feeding in. Deprecated - Use TariffV2 instead. deprecated: true expectedConsumption: type: - number - 'null' description: ExpectedConsumption is the expected annual consumption in kWh. x-readme-ref-name: MetadataEnergySupplier smartMeter: title: Smart Meter description: Represents the metadata to report if a smart meter has been installed. type: object properties: installed: type: - boolean - 'null' description: Reports if the smart meter has been installed. hasInstallationDate: type: - boolean - 'null' description: Reports if the provider has sent us a installation date that can be found in energy metadata. x-readme-ref-name: MetadataSmartMeter x-readme-ref-name: SystemMetadata x-readme-ref-name: AbstractSystem - properties: id: type: string format: uuid readOnly: true description: Unique identifier of a system. example: aa3e5a93-bb38-4b15-b7f2-af40daf3a1dc createdAt: type: string format: date-time readOnly: true description: Date when the system was created in RFC3339 format. example: '2017-12-22T14:20:50Z' updatedAt: type: string format: date-time readOnly: true description: Date when the system was last updated in RFC3339 format. example: '2017-12-24T08:33:00Z' chargingIntervals: type: array readOnly: true description: Displays charging intervals of the system's EV charging stations. items: title: EV Charging Schedule type: object allOf: - title: EV Charging Schedule description: 'An Electric Vehicle charging schedule represents an interval in which the electric vehicle is supposed to charge at a defined limit. ' type: object properties: from: type: string format: date-time example: '2021-11-04T00:00:00Z' description: 'Specifies when the schedule should start in RFC3339 format. ' to: type: string format: date-time example: '2021-11-04T00:30:00Z' description: 'Specifies when the schedule should end in RFC3339 format. ' limit: description: 'The maximum amount of power in Watts that will be used for scheduling charging in the interval [from, to]. ' example: 75000 title: Positive Power in Watt. type: integer format: int64 minimum: 0 x-readme-ref-name: PositivePower x-readme-ref-name: AbstractEVChargingSchedule - properties: id: type: string format: uuid example: ec4d0c89-a604-49ac-82f0-427f9cb42204 readOnly: true updatedAt: type: string format: date-time readOnly: true description: Specifies when the schedule was updated the last time. - required: - id - from - to - limit x-readme-ref-name: EVChargingSchedule gateways: description: The gateways of which this system is comprised. type: array readOnly: true items: allOf: - title: Gateway description: 'A gateway used to monitor and control appliances. For instance, our beloved gridbox is a gateway. ' type: object properties: name: deprecated: true type: string maxLength: 255 description: Name of the gateway. debugModeUntil: deprecated: true type: string format: date-time description: 'Date until which debug messages are logged in RFC3339 format. **Deprecated**: defaults to `createdAt` + 3 days. ' x-readme-ref-name: AbstractGateway - properties: id: type: string format: uuid example: 6dd0a658-5828-4d30-bc65-a03c6d6e425f description: Unique identifier of a gateway. readOnly: true type: type: string description: 'Type of the gateway. **Deprecated** - Non-physical gateways will no longer be supported from 01.03.2024. This field will consequently be removed. ' deprecated: true enum: - VIRTUAL - PHYSICAL - OTHER x-readme-ref-name: GatewayType createdAt: type: string format: date-time readOnly: true description: Date when the Gateway was created in RFC3339 format. updatedAt: type: string format: date-time readOnly: true description: Date when the Gateway was last updated in RFC3339 format. registeredAt: deprecated: true type: string format: date-time readOnly: true description: 'Date when the Gateway was first registered in RFC3339 format. **Deprecated**: defaults to `createdAt`. ' connectionStatus: title: Connection Status type: object readOnly: true properties: status: type: string description: "Indicates the connection status. Is one of:\n * `AVAILABLE`: Gateway has sent data in the last 5 minutes\n * `TEMPORARILY_UNAVAILABLE`: Gateway has not sent data in the last 5 minutes\n * `UNAVAILABLE`: Gateway has not sent data in the last 24 hours\n * `UNKNOWN`: Gateway was never online and never sent data or the connection status can't be determined." enum: - AVAILABLE - TEMPORARILY_UNAVAILABLE - UNAVAILABLE - UNKNOWN contactedAt: type: string format: date-time deprecated: true description: 'When the gateway/appliance has last contacted the gridX cloud. In case the gateway was never online and never sent data, this field is null. Deprecated: Gateway heartbeats will be removed in future versions and this will be only estimated. Use `statusChangedAt` instead. ' statusChangedAt: type: string format: date-time description: 'When the gateway status last changed. In case the gateway was never online this field is null. ' required: - status x-readme-ref-name: ConnectionStatus vendorID: deprecated: true description: 'ID of the vendor account to which the corresponding system is assigned. **Deprecated**: omitted from responses by default. ' type: string format: uuid example: 6dd0a658-5828-4d30-bc65-a03c6d6e425f startcode: description: Code used to register a new gateway. type: string example: 39FDDF7D85BAAD2D manufacturer: deprecated: true description: 'Manufacturer of the gateway. **Deprecated**: defaults to `gridX`. ' type: string example: gridX readOnly: true model: description: Model of the gateway. type: string example: 2.00P-X readOnly: true serialnumber: description: Serial number of the gateway. type: string example: C083-200-000-000-199-P-X readOnly: true additionalIdentifiers: description: Additional identifiers used by the gateway. type: array items: title: Additional identifiers of the gridBox. description: Additional identifiers used by the gridBox. type: object properties: service: type: string readOnly: true description: The service this identifier is referring to, e.g the protocol used for the appliance-gridBox handshake example: EEBUS type: type: string readOnly: true description: The type of the identifier. example: SKI enum: - UNKNOWN - SKI identifier: type: string readOnly: true description: The actual identifier, e.g "SKI" used in the TLS certificate for the communication. If type is "SKI", it is hexadecimal-encoded. x-readme-ref-name: AdditionalIdentifier readOnly: true scanners: type: array readOnly: true description: List of scanner names that are enabled for this gateway. items: type: string description: The name of the scanner which searches for the appliance in the network. example: SMA_INVERTER_IGMP_HOST_DISCOVERY x-extensible-enum: - SMA_INVERTER_IGMP_HOST_DISCOVERY - SMA_INVERTER_ARP_HOST_DISCOVERY - SMA_METER - BCONTROL_METER - SOLAREDGE_INVERTER_METER_MODBUS_TCP - SOLAREDGE_INVERTER_METER_MODBUS_RTU - SOLARLOG_MONITOR - CUSTOMER_HOLFELDER_METER - CUSTOMER_HOLFELDER_INVERTER - E3DC_INVERTER_METER - KOSTAL_INVERTER - STUDER_INVERTER - FRONIUS_INVERTER - HUAWEI_INVERTER - KEBA_CHARGING_STATION - ECHARGE_CHARGING_STATION - INNOGY_CHARGING_STATION - ELECTRIS_METER - SOLARWATT_INVERTER_METER - ABL_CHARGING_STATION - SIEMENS_PAC_METER - JANITZA_METER - JANITZA_METER_RTU - EVTEC_CHARGING_STATION - HIKING_METER_RTU - EEBUS_FUEL_CELL_METER - KOSTAL_INVERTER_PLENTICORE - SONNENBATTERIE_UPNP - VIRTUAL_METER - MENNEKES_UPNP - ANYBUS_MBUS_CONVERTER_METER - EEBUS_GENERIC - SIMULATION_GENERIC - ALFEN_NG9XX_MODBUS_CHARGING_STATION - ALPITRONIC_HYPERCHARGER_MODBUS_CHARGING_STATION - MY_PV_AC_THOR_HEATER - COMPLEO_MODBUS_CHARGING_STATION - OCPP_CHARGING_STATION - BENDER_CHARGING_STATION - VOLTERION_REDOX_FLOW_BATTERY - XNET_METER - RSW_METER - SCHNEIDER_METER - INNOGY_MODBUS_CHARGING_STATION - MENNEKES_PREMIUM_MODBUS_CHARGING_STATION - PLPLANO_MODBUS_RTU_METER - HEIDELBERG_ENERGY_CONTROL_MODBUS_RTU_CHARGING_STATION - CARLO_GAVAZZI_MODBUS_RTU_METER - VESTEL_CHARGING_STATION - INNOTEC_HEAT_PUMP - WALLBE_MODBUS_CHARGING_STATION - EVBOX_MAX_CHARGING_STATION - ISKRAEMECO_METER - SUNGROW_MODBUS_INVERTER - WAGO_IO_DEVICE - GOE_CHARGING_STATION - XNET_CLOUD_HEAT_PUMP - XNET_CLOUD_GENERIC - LANDIS_GYR_METER - POWERDALE_CHARGING_STATION - EASTRON_SDM230_METER - EASTRON_SDM72DM_METER - ZUCCHETTI_CONNEXT_BOX - PLVARIO_ENERGY_METER_EM3 - ABB_OPC_UA_CHARGING_STATION - DATA_LOGGER_DEVICE - POWERSIDE_METER - PPC_METER - RUTENBECK_TCR_IP4_IO_DEVICE - JEAN_MUELLER_PL_MULTI_METER - ENPHASE_ENVOY_S_GATEWAY - SOLAX_MODBUS_RTU_INVERTER - ALPHA_ESS_HI10_HYBRID_INVERTER - ZUCCHETTI_MODBUS_RTU_INVERTER - STIEBEL_ELTRON_MODBUS_TCP_HEAT_PUMP - MENNEKES_AMTRON_COMPACT_2S_MODBUS_RTU_CHARGING_STATION - SAIA_PCD1_E_LINE_HEAT_PUMP - SUNGROW_SG_MODBUS_INVERTER - SOLAX_MODBUS_TCP_INVERTER - PHOENIX_CONTACT_EM_PRO_METER - DAIKIN_HOMEHUB_MODBUS_TCP_HEAT_PUMP - SOLPLANET_MODBUS_TCP_INVERTER - SUNGROW_SHXRS_SHXT_MODBUS_INVERTER - KOSTAD_DC_CHARGING_STATION - GIVENERGY_GIV_TCP_INVERTER - FOX_ESS_MODBUS_TCP_INVERTER - SHELLY_HTTP_METER - PIXII_MODBUS_TCP_BESS - GOODWE_MODBUS_TCP_INVERTER - READY_FOR_GRIDX - KOSTAL_ENECTOR_CHARGING_STATION - MENNEKES_4YOU_CHARGING_STATION - EKOENERGETYKA_CHARGING_STATION - VIESSMANN_EEBUS_INVERTER_AND_HEAT_PUMP - VAILLANT_EEBUS_HEAT_PUMP - PROLAN_EEBUS_STB - PPC_EEBUS_METER - THEBEN_SE_EEBUS_METER - DAIKIN_ALTHERMA4_MODBUS_TCP_HEAT_PUMP - FOXESS_CHARGING_STATION - BOSCH_BUDERUS_EEBUS_HEAT_PUMP - KOSTAL_EBOX_DC_B11_EEBUS_CHARGING_STATION - SOLPLANET_IBC_SOLAR_CHARGING_STATION - ADS_TEC_CHARGING_STATION - WOLF_EEBUS_HEAT_PUMP - SHELLY_3EMPRO_HTTP_METER - SHELLY_PRO2_HTTP_IO_DEVICE - SWISTEC_EEBUS_METER - BMW_DC_WALLBOX_EEBUS_CHARGING_STATION - SUNGROW_CHARGING_STATION - ETREL_INCH_DUO_CHARGING_STATION - ALPHAESS_SMILE_G3_T4_T10 - SUNGROW_EMS300CP_BESS - HUAWEI_SMART_LOGGER_BESS - SOLAX_MODBUS_TCP_METER x-readme-ref-name: ScannerName applianceComposition: type: array readOnly: true description: Appliance types that are connected to the gateway for overview purposes. example: - HEAT_PUMP items: type: string required: - id - type - connectionStatus - createdAt - updatedAt x-readme-ref-name: Gateway status: type: string readOnly: true deprecated: true enum: - UNDEFINED - OK - WARNING - ERROR description: "Status of the system: \n * `OK`: If the attached gateway is reported as ONLINE.\n * `WARNING`: If the attached gateway is reported as OFFLINE but less than 24h ago.\n * `ERROR`: If the attached gateway is reported as OFFLINE for more than 24h ago. \n * `UNDEFINED`: otherwise\n\n**Deprecated** - Use `gatewayStatus` instead.\n" gatewayStatus: type: string readOnly: true description: "Status of the system's gateway: \n * `AVAILABLE` - The gateway is reported as ONLINE.\n * `UNAVAILABLE` - The gateway is reported as OFFLINE.\n * `UNKNOWN` - The system has no gateway, or the gateway status is not known.\n\nIf you need more granularity, you can use the `connectionStatus` in `gateways` instead.\n" enum: - AVAILABLE - UNAVAILABLE - UNKNOWN assetsStatus: type: object readOnly: true description: 'Provides information about the system''s health, such as the computed combined status of all of its assets as well as their respective counts. Only included in the response if filtered by using the `filterBy` parameter, or included via the `include` parameter. ' properties: status: type: string description: 'The combined status of all of this system''s assets according to the following rules: AVAILABLE → All the assets are successfully connected in the last 5 minutes. UNHEALTHY → Only some assets are successfully connected in the last 5 minutes. UNAVAILABLE → No assets are successfully connected in the last 5 minutes. UNKNOWN → Fallback, e.g. system without assets or all assets have an unknown status. ' enum: - UNKNOWN - UNAVAILABLE - UNHEALTHY - AVAILABLE unknownCount: readOnly: true description: 'The total number of assets for which there is no status information. ' type: integer example: 321 unavailableCount: readOnly: true description: 'The total number of assets which have connected in the past but not in the past 5 minutes. ' type: integer example: 321 availableCount: readOnly: true description: 'The total number of assets which have connected in the past 5 minutes. ' type: integer example: 321 assetsKinds: type: array readOnly: true description: 'Provides information about the distinct kinds of assets attached to a system. Only included in the response if filtered by using the `filterBy` parameter, or included via the `include` parameter. ' items: type: string x-extensible-enum: - AIR_CONDITIONER - BATTERY - BTTP - CLUSTER - EV - EVSTATION - FUEL_CELL - GRID - HEAT_PUMP - HEAT_PUMP_EXTERNAL - HEATER - HEATING - HYBRID - IO_DEVICE - MISC - PV - PV_EXTERNAL - UNKNOWN - WIND_TURBINE assetsGatewayType: type: string readOnly: true description: 'Provides information about the gateway type of assets attached to a system. Returns HYBRID when both CLOUD and GRIDBOX assets are present. Omitted when the system has no assets. Only included in the response if filtered by using the `filterBy` parameter, or included via the `include` parameter. ' enum: - CLOUD - GRIDBOX - HYBRID tags: type: array readOnly: true description: 'Provides information about the distinct tags attached to a system. Only included in the response if filtered by using the `filterBy` parameter, or included via the `include` parameter. ' items: type: object properties: name: type: string value: type: string x-readme-ref-name: SystemWithoutProductOption - title: Embedded accounts description: 'Hierarchy of accounts the system belongs to, from the authenticated account down to the end customer''s. ' type: object properties: accounts: type: array items: title: Account description: 'An account describes an organizational unit to manage access to systems for one or multiple users. ' type: object readOnly: true allOf: - title: Account description: 'An account describes an organizational unit to manage access to systems for one or multiple users. This is the base type for the more concrete usages and not used directly within operations. ' type: object properties: name: type: string example: John Doe description: Name of the account, can be chosen freely but should be kept terse and descriptive. minLength: 1 maxLength: 256 email: type: string example: john@doe.com description: The email field of the account can optionally be chosen e.g. for contact purposes (in order to reach the responsible person for the account). maxLength: 256 solution: type: string description: 'Represents the supported solutions within the account: - HOME if the account contains household-like systems. - CHARGE if the account is used solely for charging station fleet management. - GENERAL if unsure what the account should contain or if it''s a mix of multiple solutions. - SMART_DISTRICT if the account is used solely for smart district management. If not set, the parent account''s solution will be assumed. ' enum: - HOME - CHARGE - GENERAL - SMART_DISTRICT - MICROGRID - HOME_VIRTUAL_METERING - COMMERCIAL - CUSTOM_P2P x-readme-ref-name: InventoryAccountSolution x-readme-ref-name: InventoryAbstractAccount - properties: id: type: string format: uuid example: 49a4f165-8233-426b-a1a4-e569665a25dd description: Uniquely identifies the account. parentID: type: string format: uuid example: 19a4f165-8233-426b-a1a4-e569665a25dd description: Parent of the account for a tree-like account structure. Only the root account does not have a parent ID. createdAt: type: string format: date-time description: Specifies when the account was created. updatedAt: type: string format: date-time description: Specifies when the account was updated. systemsCount: type: integer description: SystemCount is the number of systems assigned to this account example: 1 kind: type: string readOnly: true enum: - b2b - end-user description: If b2b, the account is a regular account. If end-user, the account is a customer account which contains just one user. x-readme-ref-name: AccountKind mainAddress: title: Address description: Represents a physical address of a customer. allOf: - type: object properties: city: description: The city of the location. type: string example: Aachen country: description: The country of the location. type: string example: Germany addressLine1: description: 'First line of the location''s address, typically containing the main information such as the street name and house number. ' type: string example: Oppenhoffallee 143 addressLine2: description: 'Second line of the location''s address, typically containing additional information such as apartment numbers, suite numbers, or other details that can help in identifying the exact location of the address. ' type: string addressLine3: description: 'Third line of the location''s address, typically containing any other details that can help in identifying the exact location of the address. ' type: string addressLine4: description: 'Fourth line of the location''s address, typically containing any other details that can help in identifying the exact location of the address. ' type: string timeZone: description: The TZ Identifier of the location's timezone. type: string example: Europe/Berlin readOnly: true x-readme-ref-name: InventoryAbstractLocation - type: object properties: postalcode: description: The postal code of the location. type: string example: '52062' region: description: The region of the address. type: string telephone: description: The telephone number of the customer. type: string x-readme-ref-name: InventoryAddress customization: description: Customization can be used to store arbitrary data. required: - id - createdAt - updatedAt x-readme-ref-name: InventoryAccount readOnly: true x-readme-ref-name: EmbeddedAccounts - properties: productOption: type: object allOf: - title: Product Option description: 'A product option describes a set of features whose access should be restricted from or granted to users of a system. Systems can be assigned a product option to manage their access to these features. This is the base type for the more concrete usages and not used directly within operations. ' type: object properties: name: type: string description: Name of the product option. example: Default Product Option description: type: string description: Describes the purpose of the product option. x-readme-ref-name: AbstractProductOption - properties: id: description: Unique identifier of the product option. type: string format: uuid example: d5166f02-8b56-4200-90bd-35d3d17391b4 accountID: description: Unique identifier of the account that owns the product option. type: string format: uuid example: d73b6749-2c32-4bca-ab73-50d8e3744edf isDefault: type: boolean description: Indicates whether the product option should be assigned by default to all systems of the owning account. functionalities: description: The default functionalities that a product option restricts access to. Deprecated - Use `showFunctionalities` and `hideFunctionalities` instead. type: array readOnly: true deprecated: true items: type: object allOf: - description: 'A product functionality describes a feature. It is used to manage access to this feature via product options. This is the base type for the more concrete usages and not used directly within operations. ' type: object properties: name: type: string maxLength: 256 description: Name of the product functionality. example: EV Manager hide: type: boolean description: Indicates whether the product functionality should be hidden or shown. description: type: string description: Describes the purpose of the product functionality. x-readme-ref-name: AbstractProductFunctionality - properties: id: description: Unique identifier of the product functionality. type: string format: uuid example: 4e3392ce-ed94-4946-8a11-665e0443723e required: - id - name - hide x-readme-ref-name: ProductFunctionality hideFunctionalities: readOnly: true description: The default functionalities that a product option restricts access to. Must be of type `hide=true`. type: array items: type: object allOf: - description: 'A product functionality describes a feature. It is used to manage access to this feature via product options. This is the base type for the more concrete usages and not used directly within operations. ' type: object properties: name: type: string maxLength: 256 description: Name of the product functionality. example: EV Manager hide: type: boolean description: Indicates whether the product functionality should be hidden or shown. description: type: string description: Describes the purpose of the product functionality. x-readme-ref-name: AbstractProductFunctionality - properties: id: description: Unique identifier of the product functionality. type: string format: uuid example: 4e3392ce-ed94-4946-8a11-665e0443723e required: - id - name - hide x-readme-ref-name: ProductFunctionality showFunctionalities: readOnly: true description: The extra functionalities that a product option grants access to. Must be of type `hide=false`. type: array items: type: object allOf: - description: 'A product functionality describes a feature. It is used to manage access to this feature via product options. This is the base type for the more concrete usages and not used directly within operations. ' type: object properties: name: type: string maxLength: 256 description: Name of the product functionality. example: EV Manager hide: type: boolean description: Indicates whether the product functionality should be hidden or shown. description: type: string description: Describes the purpose of the product functionality. x-readme-ref-name: AbstractProductFunctionality - properties: id: description: Unique identifier of the product functionality. type: string format: uuid example: 4e3392ce-ed94-4946-8a11-665e0443723e required: - id - name - hide x-readme-ref-name: ProductFunctionality required: - id - accountID - name - isDefault - functionalities - hideFunctionalities - showFunctionalities x-readme-ref-name: ProductOption productOptionUpdatedAt: description: Time at which the system's product option was last changed in RFC3339 format. type: string format: date-time readOnly: true example: '2009-11-10T23:20:50Z' required: - id - name - createdAt - updatedAt x-readme-ref-name: System '403': description: Forbidden. content: application/vnd.gridx.v2+json: schema: readOnly: true allOf: - title: General Exception description: Represents a general error structure returned by our REST API. type: object properties: message: type: string description: Message represents the message reported to the user. details: type: array description: 'Details represents detail information for the user to fix this problem ' items: type: string required: - message x-readme-ref-name: GeneralException - title: UnauthorizedError - Forbidden Error description: Forbidden Error example: message: Bad credentials x-readme-ref-name: ForbiddenException '422': description: Validation failed. content: application/vnd.gridx.v2+json: schema: readOnly: true allOf: - title: General Exception description: Represents a general error structure returned by our REST API. type: object properties: message: type: string description: Message represents the message reported to the user. details: type: array description: 'Details represents detail information for the user to fix this problem ' items: type: string required: - message x-readme-ref-name: GeneralException - title: ClientError - Validation description: 'Validation indicates that the request body contains fields which does not pass the validation. ' type: object required: - message - details example: message: Validation failed details: - email is not valid x-readme-ref-name: InvalidException '500': description: There has been an internal error on our side. We're looking into it. content: application/vnd.gridx.v2+json: schema: readOnly: true allOf: - title: General Exception description: Represents a general error structure returned by our REST API. type: object properties: message: type: string description: Message represents the message reported to the user. details: type: array description: 'Details represents detail information for the user to fix this problem ' items: type: string required: - message x-readme-ref-name: GeneralException - title: ServerSideError - Internal Server Error description: Internal Server Error example: message: Internal Server Error x-readme-ref-name: InternalException security: - HeaderAuth: - SystemsWrite x-code-samples: - lang: python label: Python source: "import requests\n\nurl = \"https://api.gridx.de/systems\"\n\nheaders = {\n \"accept\": \"application/vnd.gridx.v2+json\",\n \"content-type\": \"application/json\"\n}\n\nresponse = requests.post(url, headers=headers)\n\nprint(response.text)" - lang: shell label: Shell source: "curl --request POST \\\n --url https://api.gridx.de/systems \\\n --header 'accept: application/vnd.gridx.v2+json' \\\n --header 'content-type: application/json'" - lang: go label: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io\"\n)\n\nfunc main() {\n\n\turl := \"https://api.gridx.de/systems\"\n\n\treq, _ := http.NewRequest(\"POST\", url, nil)\n\n\treq.Header.Add(\"accept\", \"application/vnd.gridx.v2+json\")\n\treq.Header.Add(\"content-type\", \"application/json\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := io.ReadAll(res.Body)\n\n\tfmt.Println(string(body))\n\n}" - lang: javascript label: Javascript source: "const options = {\n method: 'POST',\n headers: {accept: 'application/vnd.gridx.v2+json', 'content-type': 'application/json'}\n};\n\nfetch('https://api.gridx.de/systems', options)\n .then(res => res.json())\n .then(res => console.log(res))\n .catch(err => console.error(err));" - lang: java label: Java source: "OkHttpClient client = new OkHttpClient();\n\nRequest request = new Request.Builder()\n .url(\"https://api.gridx.de/systems\")\n .post(null)\n .addHeader(\"accept\", \"application/vnd.gridx.v2+json\")\n .addHeader(\"content-type\", \"application/json\")\n .build();\n\nResponse response = client.newCall(request).execute();" - lang: java label: Kotlin source: "val client = OkHttpClient()\n\nval request = Request.Builder()\n .url(\"https://api.gridx.de/systems\")\n .post(null)\n .addHeader(\"accept\", \"application/vnd.gridx.v2+json\")\n .addHeader(\"content-type\", \"application/json\")\n .build()\n\nval response = client.newCall(request).execute()" - lang: javascript label: Swift source: "import Foundation\n\nlet url = URL(string: \"https://api.gridx.de/systems\")!\nvar request = URLRequest(url: url)\nrequest.httpMethod = \"POST\"\nrequest.timeoutInterval = 10\nrequest.allHTTPHeaderFields = [\n \"accept\": \"application/vnd.gridx.v2+json\",\n \"content-type\": \"application/json\"\n]\n\nlet (data, _) = try await URLSession.shared.data(for: request)\nprint(String(decoding: data, as: UTF8.self))" - lang: csharp label: C# source: 'using RestSharp; var options = new RestClientOptions("https://api.gridx.de/systems"); var client = new RestClient(options); var request = new RestRequest(""); request.AddHeader("accept", "application/vnd.gridx.v2+json"); request.AddHeader("content-type", "application/json"); var response = await client.PostAsync(request); Console.WriteLine("{0}", response.Content); ' servers: - url: https://api.gridx.de description: Production /systems/list: get: summary: List all Systems operationId: getSystemsList description: 'List systems that are accessible to the authenticated user. This endpoint supports pagination.' tags: - System parameters: - name: embed description: 'Describes which embedded fields of the system should be populated. **Only applicable for stable version, removed in the draft!** ' deprecated: true in: query schema: type: string enum: - user - name: include description: 'This query param allows to set certain fields only when needed. This makes the request faster as it requires to load only necessary data. Requesting any of the `gateways` nested fields like `gateways.applianceComposition`, `gateways.connectionStatus` or `gateways.additionalIdentifiers` will result in the `gateways` field being set. However, only requesting the `gateways` field will not set these expensive nested fields by default. The response would only include basic `gateways` nested fields. **Only applicable for stable version!** If this param is set, only the specified fields are included. All other fields, which are possible to include, will be excluded then. assetsStatus and assetsKinds and tags are only available in the draft version. **Only applicable for draft version!** If this param is not set, none of the specified fields will be included in the response. ' in: query explode: false schema: type: array items: type: string enum: - gateways - gateways.applianceComposition - gateways.connectionStatus - gateways.additionalIdentifiers - accounts - location - priorities - appliancePriorities - status - gatewayStatus - parentID - visibleFields - visibleAppliances - productOption - assetsStatus - assetsKinds - assetsGatewayType - tags - name: filterBy in: query required: false description: "Use this query parameter to filter the result set by a `field:operator(value)` expression.\n\nCombine multiple expressions (the result matches _all_ of them) by repeating the parameter, e.g.\n`?filterBy=field1:op(value1)&filterBy=field2:op(value2,value3)`. A single semicolon-separated value also works,\nbut `;` **must** be URL-encoded as `%3B`, since an unencoded `;` is dropped by the server.\n\nSupported operators are:\n* `eq` - equals. Accepts 0 or 1 values and is case sensitive\n* `ne` - not equals. Accepts 0 or 1 values and is case sensitive\n* `has` - has. Checks if a matching tag name/tag value pair exists (see /systems/{systemID}/tags). Accepts exactly 2 values and is case sensitive\n* `incl` - includes. Accepts 1 or more values and is case sensitive\n* `excl` - excludes. Accepts 1 or more values and is case sensitive\n* `lt` - less than. Accepts exactly one value and is case sensitive\n* `le` - less than or equal. Accepts exactly one value and is case sensitive\n* `gt` - greater than. Accepts exactly one value and is case sensitive\n* `ge` - greater than or equal. Accepts exactly one value and is case sensitive\n* `li` - like. Accepts exactly one value and is case insensitive\n* `empty` - is empty. Accepts no values and is case insensitive\n* `nempty` - is not empty. Accepts no values and is case insensitive\n* `any` - applies to array fields, true if it contains any of the given values. Accepts 1 or more values and is case sensitive\n* `only` - applies to array fields, true every distinct value in the field is among the given values. Accepts 1 or more values and is case sensitive\n* `all` - applies to array fields, true if it contains all of the given values. Accepts 1 or more values and is case sensitive\n* `none` - applies to array fields, true if it contains none of the given values. Accepts 1 or more values and is case sensitive\n* `bool` - applies to boolean fields. Accepts 1 string value that is either `true` or `false`\n\nNot all fields are available for filtering and not all filters are supported on all fields. The available \nfields are:\n* `name` - accepts `eq`, `incl`, `excl`, `li`\n* `gatewaySN` - accepts `eq`, `incl`, `excl`, `li`, `empty`, `nempty`\n* `wizardStatus` - accepts `eq`, `neq`, `incl`, `excl`, `li`\n* `gatewayStatus` - accepts `eq`, `neq`, `incl`, `excl`, `li`\n* `createdAt` - accepts `lt`, `le`, `gt`, `ge`\n* `updatedAt` - accepts `lt`, `le`, `gt`, `ge`\n* `lastHeartbeatReceivedAt` - accepts `lt`, `le`, `gt`, `ge` (deprecated, will be removed in future versions)\n* `parentID` - accepts `eq`, `incl`, `excl`\n* `systemID` - accepts `eq`, `incl`, `excl`\n* `gatewayID` - accepts `eq`, `incl`, `excl`, `empty`, `nempty`\n* `assetsGatewayType` - accepts `eq`, `ne`, `incl`, `excl`\n* `tags` - accepts `has`\n* `assetsStatus` - accepts `eq`, `neq`, `incl`, `excl`, `li`\n* `assetsKinds` - accepts `any`, `all`, `none`\n* `isStarred` - accepts `bool`\n\nAllowed values for the operators are dependent on the field they are applied to. The allowed values for each field are:\n* `name` - accepts any string value\n* `gatewaySN` - accepts any string value\n* `wizardStatus` - accepts any string value\n* `gatewayStatus` - accepts `AVAILABLE`, `UNAVAILABLE`, `UNKNOWN`\n* `createdAt` - accepts a timestamp in RFC3339 format, e.g. `2021-10-13T14:23:30Z`\n* `updatedAt` - accepts a timestamp in RFC3339 format, e.g. `2021-10-13T14:23:30Z`\n* `lastHeartbeatReceivedAt` - accepts a timestamp in RFC3339 format, e.g. `2021-10-13T14:23:30Z`\n* `parentID` - accepts a UUID string value, e.g. `550e8400-e29b-41d4-a716-446655440000`\n* `systemID` - accepts a UUID string value, e.g. `550e8400-e29b-41d4-a716-446655440000`\n* `gatewayID` - accepts a UUID string value, e.g. `550e8400-e29b-41d4-a716-446655440000`\n* `assetsGatewayType` - accepts `GRIDBOX`, `CLOUD`, or `HYBRID` (HYBRID means the system has both GRIDBOX and CLOUD assets)\n* `tags` - accepts any string value\n* `assetsStatus` - accepts `AVAILABLE`, `UNAVAILABLE`, `UNHEALTHY`, `UNKNOWN`\n* `assetsKinds` - accepts any string, refer to the list of available asset kinds in the documentation\n* `isStarred` - accepts any boolean value, i.e. `true` or `false`\n\nMake sure that the string is URL encoded according to RFC 3986.\n" schema: type: string pattern: '^(((\w+):(eq|ne|has|incl|excl|lt|le|gt|ge|li|empty|nempty|any|only|all|none|bool)\((([^,();]*)(,[^,();]+)*))\))(;((\w+):(eq|ne|has|incl|excl|lt|le|gt|ge|li|empty|nempty|any|only|all|none|bool)\((([^,();]*)(,[^,();]+)*)\)))*$ ' style: form explode: false - name: sortBy in: query required: false description: "Specify a comma-separated list of direction and fields that the result set will be sorted by. Note that the \norder of the fields matters and the leftmost field in the list will take the highest precedence. The \noperator can be either `+` for sorting the column in an ascending order (typically a to z or 1 to 9) or `-`\nfor a descending order (from z to a or 9 to 1). The field names are identical to the ones that are available\nfor filtering (see `filterBy` query parameter).\n" schema: type: string pattern: ^(\+|-)(\w+)(,(\+|-)(\w+))*$ style: form explode: false example: +field1,-field2 - name: limit description: 'Limit the number of elements returned responses to the specified number. If fewer elements than the given number are available, then this number is obsolete. ' in: query required: false schema: type: integer default: 20 example: 20 - name: offset description: 'Specifying an offset will omit the first `n` elements in the result set where `n` is the number given to the offset query parameter. In combination with limiting and sorting, this enables pagination. ' in: query required: false schema: type: integer default: 0 example: 0 - name: includeCounts description: 'Enables calculation of the counts in the response metadata object. By default those aren''t calculated as it''s pretty expensive to do so and a lot of clients of this endpoint don''t need them. ' in: query required: false schema: type: boolean default: false example: false - name: page description: 'Requested page, to be used in combination with the `per_page` parameter. ' in: query schema: type: integer format: int32 default: 1 minimum: 1 example: 1 - name: per_page description: 'Requested number of items per page. ' in: query schema: type: integer format: int32 default: 20 minimum: 20 maximum: 500 example: 10 responses: '200': description: A list of systems and metadata about the list. content: application/vnd.gridx.v2+json: schema: type: object description: A list of systems and metadata about the list properties: systems: type: array items: title: System description: "A System represents the logical view of one gateway and its appliances.\n\nFor example, a household can be represented as a system with a gateway such as a \ngridBox, and its connected appliances.\n" allOf: - title: System description: "A System represents the logical view of one gateway and its appliances.\n \nFor example, a household can be represented as a system with a gateway such as a \ngridBox, and its connected appliances.\n" type: object allOf: - title: System description: "A System represents the logical view of one gateway and its appliances.\n\nFor example, a household can be represented as a system with a gateway such as a \ngridBox, and its connected appliances.\n" properties: name: type: - string - 'null' maxLength: 200 description: Name of the System. example: gridX Headquarter solution: type: string description: "Represents the solution that the system uses:\n- HOME if the system is for a household. \n- CHARGE if the system is for charging station fleet management.\n" x-extensible-enum: - HOME - CHARGE - GENERAL - SMART_DISTRICT - MICROGRID - HOME_VIRTUAL_METERING - COMMERCIAL - CUSTOM_P2P x-readme-ref-name: SystemSolution priorities: description: Allows prioritisation of EMS functionalities by appliance type. Accepted values are ["BATTERY", "EV", "HEATPUMP", "HEATER"]. type: array items: type: string example: - EV - BATTERY appliancePriorities: type: array description: 'Allows prioritisation of EMS functionalities by appliance UUIDs. This option takes precendence over `priorities` field as it is more explicit. ' items: type: string format: uuid plan: description: "Charge plan of the system. Must be one of two possible options: \n * `2020_DLM_EVS_00` - Use this value for Dynamic Load Management.\n * `2020_SLM_EVS_00` - Use this value for Static Load Management.\n" type: string x-extensible-enum: - 2020_DLM_EVS_00 - 2020_SLM_EVS_00 x-readme-ref-name: SystemChargePlan operatingSince: type: string format: date-time description: Date since when the system is active in RFC3339 format. example: '2017-12-23T10:15:40Z' curtailmentStrategy: type: string deprecated: true description: "Deprecated: Only EQUALLY remains available and future implementations will likely use another field name.\nThe curtailment strategy describes how appliances shall be curtailed.\n * EQUALLY: Every appliance gets equally (fair) curtailed.\n" x-extensible-enum: - EQUALLY x-readme-ref-name: SystemCurtailmentStrategy location: title: Location description: Represents a GPS location with longitude and latitude. type: object allOf: - type: object properties: city: description: The city of the location. type: string example: Aachen country: description: The country of the location. type: string example: Germany addressLine1: description: 'First line of the location''s address, typically containing the main information such as the street name and house number. ' type: string example: Oppenhoffallee 143 addressLine2: description: 'Second line of the location''s address, typically containing additional information such as apartment numbers, suite numbers, or other details that can help in identifying the exact location of the address. ' type: string addressLine3: description: 'Third line of the location''s address, typically containing any other details that can help in identifying the exact location of the address. ' type: string addressLine4: description: 'Fourth line of the location''s address, typically containing any other details that can help in identifying the exact location of the address. ' type: string timeZone: description: The TZ Identifier of the location's timezone. type: string example: Europe/Berlin readOnly: true x-readme-ref-name: InventoryAbstractLocation - type: object properties: country: deprecated: true description: 'Deprecated - Instead of this freeform text field, use countryCode ' countryCode: type: string description: Country code in ISO 3166-1 alpha-2. example: DE enum: - AF - AX - AL - DZ - AS - AD - AO - AI - AQ - AG - AR - AM - AW - AU - AT - AZ - BS - BH - BD - BB - BY - BE - BZ - BJ - BM - BT - BO - BQ - BA - BW - BV - BR - IO - BN - BG - BF - BI - CV - KH - CM - CA - KY - CF - TD - CL - CN - CX - CC - CO - KM - CG - CD - CK - CR - CI - HR - CU - CW - CY - CZ - DK - DJ - DM - DO - EC - EG - SV - GQ - ER - EE - SZ - ET - FK - FO - FJ - FI - FR - GF - PF - TF - GA - GM - GE - DE - GH - GI - GR - GL - GD - GP - GU - GT - GG - GN - GW - GY - HT - HM - VA - HN - HK - HU - IS - IN - ID - IR - IQ - IE - IM - IL - IT - JM - JP - JE - JO - KZ - KE - KI - KP - KR - KW - KG - LA - LV - LB - LS - LR - LY - LI - LT - LU - MO - MG - MW - MY - MV - ML - MT - MH - MQ - MR - MU - YT - MX - FM - MD - MC - MN - ME - MS - MA - MZ - MM - NA - NR - NP - NL - NC - NZ - NI - NE - NG - NU - NF - MK - MP - 'NO' - OM - PK - PW - PS - PA - PG - PY - PE - PH - PN - PL - PT - PR - QA - RE - RO - RU - RW - BL - SH - KN - LC - MF - PM - VC - WS - SM - ST - SA - SN - RS - SC - SL - SG - SX - SK - SI - SB - SO - ZA - GS - SS - ES - LK - SD - SR - SJ - SE - CH - SY - TW - TJ - TZ - TH - TL - TG - TK - TO - TT - TN - TR - TM - TC - TV - UG - UA - AE - GB - US - UM - UY - UZ - VU - VE - VN - VG - VI - WF - EH - YE - ZM - ZW x-readme-ref-name: LocationCountryCode postalCode: description: The postal code of the location. type: string example: '52062' longitude: description: The geographic coordinate that specifies the east–west position of the location. type: number example: 6.09294299 readOnly: true latitude: description: The geographic coordinate that specifies the north–south position of the location. type: number example: 50.77441934 readOnly: true x-readme-ref-name: Location metadata: title: Metadata description: Represents system's metadata. type: object properties: wizard: title: Wizard type: object description: Represents the metadata to keep track of the current wizard step. required: - step properties: step: description: Represents the current wizard step. type: string x-extensible-enum: - WELCOME - STARTCODE - GRIDBOX_STATUS - SYSTEM_TYPE_SELECT - ACCOUNT_ASSIGNMENT - PERSONAL_INFORMATION - SYSTEM_OVERVIEW - SYSTEM_CHILDREN_SETUP - SYSTEM_SETUP - PARAGRAPH_14A - ENERGYMANAGEMENT - HEATING_ROD - ENERGYMANAGEMENT_ACTIVATION - ENERGY_SUPPLIER - SYSTEM_CHECK - DONE - ELECTRICITY_TARIFF_V2 - KOSTAL_CONFIGURATION - ENPHASE_CONNECTION - EEBUS_PAIRING - SONNEN_CONNECTION - IO_DEVICE_CONFIGURATION - IO_DEVICE_HEAT_PUMP_CONFIGURATION - TROUBLESHOOT_INSTALLATION - INSTALLER_HUB - ENA_G100 - PV_SYSTEM - FUSE_PROTECTION - ENERGY_OPTIMIZATION - UNKNOWN firstCompletedAt: description: Represents the date and time when the final wizard step was completed first time. type: string format: date-time readOnly: true example: '2025-06-22T00:00:00Z' version: description: Represents the version of wizard. type: integer x-extensible-enum: - 1 - 2 - 3 x-readme-ref-name: MetadataWizard energy: title: Energy Metadata type: object description: represents the metadata related to the energy use case. properties: installer: type: - string - 'null' description: Installer is the person who has installed the systems. norminalPower: type: - number - 'null' minimum: 0 description: 'The system''s maximal power production in W (for historical reasons the word "norminal" is used instead of the correct term "nominal power"). *Deprecated* - Use `nominalPower` instead (in mW!). ' deprecated: true nominalPower: type: - number - 'null' minimum: 0 description: The system's maximal power production in mW. 0 is used if unset. curtailment: type: - number - 'null' description: Curtailment is the percentage of system's nominal power at which the pv inverters should stop feeding into the grid. (0-1) heatingSystem: type: - string - 'null' description: HeatingSystem represents the type of the heating system. agreedEMSTerms: type: - boolean - 'null' deprecated: true description: 'AgreedEMSTerms indicates if the customers accepts the ems terms. *Deprecated* - Use `MetadataEMS.agreedEMSTerms` instead. ' ems: title: MetadataEMS type: object description: MetadataEMS represents the energy management allowances. properties: agreedEMSTerms: type: - boolean - 'null' description: AgreedEMSTerms indicates if the customers accepts the ems terms. enabledEMS: type: - boolean - 'null' description: EnabledEMS indicates if gridBox should activate the ems. agreedDynamicPVControlTerms: type: - boolean - 'null' description: AgreedDynamicPVControlTerms indicates if the customer accepts the dynamic pc control terms. enabledDynamicPVControl: type: - boolean - 'null' description: EnabledDynamicPVControl indicates if the gridBox should activate the dynamic pv control. enabledInverterGCPControl: type: - boolean - 'null' description: 'EnabledInverterGCPControl indicates if the gridBox should activate the inverter gcp control. *Deprecated* - This is automatically detected by the gridbox. If this field is unset or false, the gridbox will determine inverter GCP control activation automatically. ' deprecated: true agreedForecastBasedEMSTerms: type: - boolean - 'null' description: '*Deprecated* Feature is deprecated and will be removed in a future release. ' deprecated: true enabledForecastBasedEMS: type: - boolean - 'null' description: '*Deprecated* Feature is deprecated and will be removed in a future release. ' deprecated: true agreedPriorityConfigurationTerms: type: - boolean - 'null' description: AgreedPriorityConfigurationTerms indicates if the customer accepts the priority configuration terms. enabledPriorityConfiguration: type: - boolean - 'null' description: EnabledPriorityConfiguration indicates if the gridBox should activate the priority configuration. agreedPowerManagementTerms: type: - boolean - 'null' description: AgreedPowerManagementTerms indicates if the customer accepts the power management terms. enabledPowerManagement: type: - boolean - 'null' description: EnabledPowerManagement indicates if the gridBox should activate the power management. enabledStaticPowerManagement: type: - boolean - 'null' description: EnabledStaticPowerManagement indicates if the gridBox should activate the static power management. enabledPowerImportPeakOptimization: type: - boolean - 'null' description: EnabledPowerImportPeakOptimization indicates if the gridBox should activate the 15min avg. energy optimization algorithm. powerImportPeakPerOptimizationInterval: type: - number - 'null' format: double deprecated: true description: 'Describes the amount of imported energy in a 15 minutes interval in VA. Deprecated: Use powerImportPeakPerOptimizationIntervalmVA instead. ' powerImportPeakPerOptimizationIntervalmVA: type: - number - 'null' format: double description: Defines the average power in a 15 minute interval in mVA for peak shaving. enabledBatteryFullGridCharge: type: - boolean - 'null' description: '*Deprecated* Feature is deprecated and will be removed in a future release. The default behaviour is to always allow charging with full power and the setting is not required anymore. ' deprecated: true enabledLessConstrainingSOCLimits: type: - boolean - 'null' description: '*Deprecated* Feature is deprecated and will be removed in a future release. ' deprecated: true derAPISettings: title: DerAPISettings type: object description: DerAPISettings represents the metadata related to DER API configuration. properties: enabledCloudAPI: type: - boolean - 'null' description: EnabledCloudAPI enables assets control with cloud DER API. constraints: title: SyncEntitySettings type: object description: SyncEntitySettings configures entity synchronisation parameters. properties: syncInterval: type: - number - 'null' format: double description: SyncInterval defines the period in seconds for data to be synchronized between gridBox and cloud DER API. ttl: type: - number - 'null' format: double description: TTL defines the time to live in seconds for entity. disabled: type: boolean description: Disabled disables the sync of entities. x-readme-ref-name: SyncEntitySettings flexibilities: title: SyncEntitySettings type: object description: SyncEntitySettings configures entity synchronisation parameters. properties: syncInterval: type: - number - 'null' format: double description: SyncInterval defines the period in seconds for data to be synchronized between gridBox and cloud DER API. ttl: type: - number - 'null' format: double description: TTL defines the time to live in seconds for entity. disabled: type: boolean description: Disabled disables the sync of entities. x-readme-ref-name: SyncEntitySettings x-readme-ref-name: DerAPISettings enabledTimeOfUseOptimization: deprecated: true type: - boolean - 'null' description: 'Indicates if time of use optimization is enabled for the system. *Deprecated* - Use `systems/{systemID}/timeofuse/options` endpoint instead. ' disableAveragePmaxCalculation: type: - boolean - 'null' description: Disables the average pMax calculation. It means EMS will not calculate average pMax and will get the default value instead. excludeApplianceTypes: description: Appliance types to be ignored by the EMS. Updating this field to an empty array clears it. **Please note that this currently requires the box to be restarted to take effect**. type: - array - 'null' items: type: string x-extensible-enum: - HEAT_PUMP evChargingReallocationTolerance: description: Specifies the maximum power in mW that can be drawn to charge an EV in case the PV surplus is not sufficient. type: - number - 'null' format: double example: 500000 enabledPowerWindowHysteresis: description: Configures the system to use the power window hysteresis feature. If unset, the system will behave as if this was activated. Set to false to deactivate. type: - boolean - 'null' x-readme-ref-name: MetadataEMS smartMeterInstallationTimestamp: description: The time the smart meter has been installed (if any), in RFC3339 format. type: - string - 'null' format: date-time example: '2020-09-21T00:00:00Z' x-readme-ref-name: MetadataEnergy energySupplier: title: Energy Supplier type: object description: MetadataEnergySupplier represents the metadata related to energy supplier. properties: type: type: - string - 'null' deprecated: true description: Type determines if gridX is the energy supplier. The value is either "GRIDX" or "OTHER". enum: - GRIDX - OTHER unitPrice: type: - number - 'null' description: UnitPrice is unit price per kWh in EU cent. Deprecated - Use TariffV2 instead. deprecated: true installment: type: - number - 'null' description: Installment is the monthly payment. baseFee: type: - number - 'null' description: BaseFee is the monthly base fee. feedInTariff: type: - number - 'null' description: FeedInTariff is the cost-based compensation in EUR cent for feeding in. Deprecated - Use TariffV2 instead. deprecated: true expectedConsumption: type: - number - 'null' description: ExpectedConsumption is the expected annual consumption in kWh. x-readme-ref-name: MetadataEnergySupplier smartMeter: title: Smart Meter description: Represents the metadata to report if a smart meter has been installed. type: object properties: installed: type: - boolean - 'null' description: Reports if the smart meter has been installed. hasInstallationDate: type: - boolean - 'null' description: Reports if the provider has sent us a installation date that can be found in energy metadata. x-readme-ref-name: MetadataSmartMeter x-readme-ref-name: SystemMetadata x-readme-ref-name: AbstractSystem - properties: id: type: string format: uuid readOnly: true description: Unique identifier of a system. example: aa3e5a93-bb38-4b15-b7f2-af40daf3a1dc createdAt: type: string format: date-time readOnly: true description: Date when the system was created in RFC3339 format. example: '2017-12-22T14:20:50Z' updatedAt: type: string format: date-time readOnly: true description: Date when the system was last updated in RFC3339 format. example: '2017-12-24T08:33:00Z' chargingIntervals: type: array readOnly: true description: Displays charging intervals of the system's EV charging stations. items: title: EV Charging Schedule type: object allOf: - title: EV Charging Schedule description: 'An Electric Vehicle charging schedule represents an interval in which the electric vehicle is supposed to charge at a defined limit. ' type: object properties: from: type: string format: date-time example: '2021-11-04T00:00:00Z' description: 'Specifies when the schedule should start in RFC3339 format. ' to: type: string format: date-time example: '2021-11-04T00:30:00Z' description: 'Specifies when the schedule should end in RFC3339 format. ' limit: description: 'The maximum amount of power in Watts that will be used for scheduling charging in the interval [from, to]. ' example: 75000 title: Positive Power in Watt. type: integer format: int64 minimum: 0 x-readme-ref-name: PositivePower x-readme-ref-name: AbstractEVChargingSchedule - properties: id: type: string format: uuid example: ec4d0c89-a604-49ac-82f0-427f9cb42204 readOnly: true updatedAt: type: string format: date-time readOnly: true description: Specifies when the schedule was updated the last time. - required: - id - from - to - limit x-readme-ref-name: EVChargingSchedule gateways: description: The gateways of which this system is comprised. type: array readOnly: true items: allOf: - title: Gateway description: 'A gateway used to monitor and control appliances. For instance, our beloved gridbox is a gateway. ' type: object properties: name: deprecated: true type: string maxLength: 255 description: Name of the gateway. debugModeUntil: deprecated: true type: string format: date-time description: 'Date until which debug messages are logged in RFC3339 format. **Deprecated**: defaults to `createdAt` + 3 days. ' x-readme-ref-name: AbstractGateway - properties: id: type: string format: uuid example: 6dd0a658-5828-4d30-bc65-a03c6d6e425f description: Unique identifier of a gateway. readOnly: true type: type: string description: 'Type of the gateway. **Deprecated** - Non-physical gateways will no longer be supported from 01.03.2024. This field will consequently be removed. ' deprecated: true enum: - VIRTUAL - PHYSICAL - OTHER x-readme-ref-name: GatewayType createdAt: type: string format: date-time readOnly: true description: Date when the Gateway was created in RFC3339 format. updatedAt: type: string format: date-time readOnly: true description: Date when the Gateway was last updated in RFC3339 format. registeredAt: deprecated: true type: string format: date-time readOnly: true description: 'Date when the Gateway was first registered in RFC3339 format. **Deprecated**: defaults to `createdAt`. ' connectionStatus: title: Connection Status type: object readOnly: true properties: status: type: string description: "Indicates the connection status. Is one of:\n * `AVAILABLE`: Gateway has sent data in the last 5 minutes\n * `TEMPORARILY_UNAVAILABLE`: Gateway has not sent data in the last 5 minutes\n * `UNAVAILABLE`: Gateway has not sent data in the last 24 hours\n * `UNKNOWN`: Gateway was never online and never sent data or the connection status can't be determined." enum: - AVAILABLE - TEMPORARILY_UNAVAILABLE - UNAVAILABLE - UNKNOWN contactedAt: type: string format: date-time deprecated: true description: 'When the gateway/appliance has last contacted the gridX cloud. In case the gateway was never online and never sent data, this field is null. Deprecated: Gateway heartbeats will be removed in future versions and this will be only estimated. Use `statusChangedAt` instead. ' statusChangedAt: type: string format: date-time description: 'When the gateway status last changed. In case the gateway was never online this field is null. ' required: - status x-readme-ref-name: ConnectionStatus vendorID: deprecated: true description: 'ID of the vendor account to which the corresponding system is assigned. **Deprecated**: omitted from responses by default. ' type: string format: uuid example: 6dd0a658-5828-4d30-bc65-a03c6d6e425f startcode: description: Code used to register a new gateway. type: string example: 39FDDF7D85BAAD2D manufacturer: deprecated: true description: 'Manufacturer of the gateway. **Deprecated**: defaults to `gridX`. ' type: string example: gridX readOnly: true model: description: Model of the gateway. type: string example: 2.00P-X readOnly: true serialnumber: description: Serial number of the gateway. type: string example: C083-200-000-000-199-P-X readOnly: true additionalIdentifiers: description: Additional identifiers used by the gateway. type: array items: title: Additional identifiers of the gridBox. description: Additional identifiers used by the gridBox. type: object properties: service: type: string readOnly: true description: The service this identifier is referring to, e.g the protocol used for the appliance-gridBox handshake example: EEBUS type: type: string readOnly: true description: The type of the identifier. example: SKI enum: - UNKNOWN - SKI identifier: type: string readOnly: true description: The actual identifier, e.g "SKI" used in the TLS certificate for the communication. If type is "SKI", it is hexadecimal-encoded. x-readme-ref-name: AdditionalIdentifier readOnly: true scanners: type: array readOnly: true description: List of scanner names that are enabled for this gateway. items: type: string description: The name of the scanner which searches for the appliance in the network. example: SMA_INVERTER_IGMP_HOST_DISCOVERY x-extensible-enum: - SMA_INVERTER_IGMP_HOST_DISCOVERY - SMA_INVERTER_ARP_HOST_DISCOVERY - SMA_METER - BCONTROL_METER - SOLAREDGE_INVERTER_METER_MODBUS_TCP - SOLAREDGE_INVERTER_METER_MODBUS_RTU - SOLARLOG_MONITOR - CUSTOMER_HOLFELDER_METER - CUSTOMER_HOLFELDER_INVERTER - E3DC_INVERTER_METER - KOSTAL_INVERTER - STUDER_INVERTER - FRONIUS_INVERTER - HUAWEI_INVERTER - KEBA_CHARGING_STATION - ECHARGE_CHARGING_STATION - INNOGY_CHARGING_STATION - ELECTRIS_METER - SOLARWATT_INVERTER_METER - ABL_CHARGING_STATION - SIEMENS_PAC_METER - JANITZA_METER - JANITZA_METER_RTU - EVTEC_CHARGING_STATION - HIKING_METER_RTU - EEBUS_FUEL_CELL_METER - KOSTAL_INVERTER_PLENTICORE - SONNENBATTERIE_UPNP - VIRTUAL_METER - MENNEKES_UPNP - ANYBUS_MBUS_CONVERTER_METER - EEBUS_GENERIC - SIMULATION_GENERIC - ALFEN_NG9XX_MODBUS_CHARGING_STATION - ALPITRONIC_HYPERCHARGER_MODBUS_CHARGING_STATION - MY_PV_AC_THOR_HEATER - COMPLEO_MODBUS_CHARGING_STATION - OCPP_CHARGING_STATION - BENDER_CHARGING_STATION - VOLTERION_REDOX_FLOW_BATTERY - XNET_METER - RSW_METER - SCHNEIDER_METER - INNOGY_MODBUS_CHARGING_STATION - MENNEKES_PREMIUM_MODBUS_CHARGING_STATION - PLPLANO_MODBUS_RTU_METER - HEIDELBERG_ENERGY_CONTROL_MODBUS_RTU_CHARGING_STATION - CARLO_GAVAZZI_MODBUS_RTU_METER - VESTEL_CHARGING_STATION - INNOTEC_HEAT_PUMP - WALLBE_MODBUS_CHARGING_STATION - EVBOX_MAX_CHARGING_STATION - ISKRAEMECO_METER - SUNGROW_MODBUS_INVERTER - WAGO_IO_DEVICE - GOE_CHARGING_STATION - XNET_CLOUD_HEAT_PUMP - XNET_CLOUD_GENERIC - LANDIS_GYR_METER - POWERDALE_CHARGING_STATION - EASTRON_SDM230_METER - EASTRON_SDM72DM_METER - ZUCCHETTI_CONNEXT_BOX - PLVARIO_ENERGY_METER_EM3 - ABB_OPC_UA_CHARGING_STATION - DATA_LOGGER_DEVICE - POWERSIDE_METER - PPC_METER - RUTENBECK_TCR_IP4_IO_DEVICE - JEAN_MUELLER_PL_MULTI_METER - ENPHASE_ENVOY_S_GATEWAY - SOLAX_MODBUS_RTU_INVERTER - ALPHA_ESS_HI10_HYBRID_INVERTER - ZUCCHETTI_MODBUS_RTU_INVERTER - STIEBEL_ELTRON_MODBUS_TCP_HEAT_PUMP - MENNEKES_AMTRON_COMPACT_2S_MODBUS_RTU_CHARGING_STATION - SAIA_PCD1_E_LINE_HEAT_PUMP - SUNGROW_SG_MODBUS_INVERTER - SOLAX_MODBUS_TCP_INVERTER - PHOENIX_CONTACT_EM_PRO_METER - DAIKIN_HOMEHUB_MODBUS_TCP_HEAT_PUMP - SOLPLANET_MODBUS_TCP_INVERTER - SUNGROW_SHXRS_SHXT_MODBUS_INVERTER - KOSTAD_DC_CHARGING_STATION - GIVENERGY_GIV_TCP_INVERTER - FOX_ESS_MODBUS_TCP_INVERTER - SHELLY_HTTP_METER - PIXII_MODBUS_TCP_BESS - GOODWE_MODBUS_TCP_INVERTER - READY_FOR_GRIDX - KOSTAL_ENECTOR_CHARGING_STATION - MENNEKES_4YOU_CHARGING_STATION - EKOENERGETYKA_CHARGING_STATION - VIESSMANN_EEBUS_INVERTER_AND_HEAT_PUMP - VAILLANT_EEBUS_HEAT_PUMP - PROLAN_EEBUS_STB - PPC_EEBUS_METER - THEBEN_SE_EEBUS_METER - DAIKIN_ALTHERMA4_MODBUS_TCP_HEAT_PUMP - FOXESS_CHARGING_STATION - BOSCH_BUDERUS_EEBUS_HEAT_PUMP - KOSTAL_EBOX_DC_B11_EEBUS_CHARGING_STATION - SOLPLANET_IBC_SOLAR_CHARGING_STATION - ADS_TEC_CHARGING_STATION - WOLF_EEBUS_HEAT_PUMP - SHELLY_3EMPRO_HTTP_METER - SHELLY_PRO2_HTTP_IO_DEVICE - SWISTEC_EEBUS_METER - BMW_DC_WALLBOX_EEBUS_CHARGING_STATION - SUNGROW_CHARGING_STATION - ETREL_INCH_DUO_CHARGING_STATION - ALPHAESS_SMILE_G3_T4_T10 - SUNGROW_EMS300CP_BESS - HUAWEI_SMART_LOGGER_BESS - SOLAX_MODBUS_TCP_METER x-readme-ref-name: ScannerName applianceComposition: type: array readOnly: true description: Appliance types that are connected to the gateway for overview purposes. example: - HEAT_PUMP items: type: string required: - id - type - connectionStatus - createdAt - updatedAt x-readme-ref-name: Gateway status: type: string readOnly: true deprecated: true enum: - UNDEFINED - OK - WARNING - ERROR description: "Status of the system: \n * `OK`: If the attached gateway is reported as ONLINE.\n * `WARNING`: If the attached gateway is reported as OFFLINE but less than 24h ago.\n * `ERROR`: If the attached gateway is reported as OFFLINE for more than 24h ago. \n * `UNDEFINED`: otherwise\n\n**Deprecated** - Use `gatewayStatus` instead.\n" gatewayStatus: type: string readOnly: true description: "Status of the system's gateway: \n * `AVAILABLE` - The gateway is reported as ONLINE.\n * `UNAVAILABLE` - The gateway is reported as OFFLINE.\n * `UNKNOWN` - The system has no gateway, or the gateway status is not known.\n\nIf you need more granularity, you can use the `connectionStatus` in `gateways` instead.\n" enum: - AVAILABLE - UNAVAILABLE - UNKNOWN assetsStatus: type: object readOnly: true description: 'Provides information about the system''s health, such as the computed combined status of all of its assets as well as their respective counts. Only included in the response if filtered by using the `filterBy` parameter, or included via the `include` parameter. ' properties: status: type: string description: 'The combined status of all of this system''s assets according to the following rules: AVAILABLE → All the assets are successfully connected in the last 5 minutes. UNHEALTHY → Only some assets are successfully connected in the last 5 minutes. UNAVAILABLE → No assets are successfully connected in the last 5 minutes. UNKNOWN → Fallback, e.g. system without assets or all assets have an unknown status. ' enum: - UNKNOWN - UNAVAILABLE - UNHEALTHY - AVAILABLE unknownCount: readOnly: true description: 'The total number of assets for which there is no status information. ' type: integer example: 321 unavailableCount: readOnly: true description: 'The total number of assets which have connected in the past but not in the past 5 minutes. ' type: integer example: 321 availableCount: readOnly: true description: 'The total number of assets which have connected in the past 5 minutes. ' type: integer example: 321 assetsKinds: type: array readOnly: true description: 'Provides information about the distinct kinds of assets attached to a system. Only included in the response if filtered by using the `filterBy` parameter, or included via the `include` parameter. ' items: type: string x-extensible-enum: - AIR_CONDITIONER - BATTERY - BTTP - CLUSTER - EV - EVSTATION - FUEL_CELL - GRID - HEAT_PUMP - HEAT_PUMP_EXTERNAL - HEATER - HEATING - HYBRID - IO_DEVICE - MISC - PV - PV_EXTERNAL - UNKNOWN - WIND_TURBINE assetsGatewayType: type: string readOnly: true description: 'Provides information about the gateway type of assets attached to a system. Returns HYBRID when both CLOUD and GRIDBOX assets are present. Omitted when the system has no assets. Only included in the response if filtered by using the `filterBy` parameter, or included via the `include` parameter. ' enum: - CLOUD - GRIDBOX - HYBRID tags: type: array readOnly: true description: 'Provides information about the distinct tags attached to a system. Only included in the response if filtered by using the `filterBy` parameter, or included via the `include` parameter. ' items: type: object properties: name: type: string value: type: string x-readme-ref-name: SystemWithoutProductOption - title: Embedded accounts description: 'Hierarchy of accounts the system belongs to, from the authenticated account down to the end customer''s. ' type: object properties: accounts: type: array items: title: Account description: 'An account describes an organizational unit to manage access to systems for one or multiple users. ' type: object readOnly: true allOf: - title: Account description: 'An account describes an organizational unit to manage access to systems for one or multiple users. This is the base type for the more concrete usages and not used directly within operations. ' type: object properties: name: type: string example: John Doe description: Name of the account, can be chosen freely but should be kept terse and descriptive. minLength: 1 maxLength: 256 email: type: string example: john@doe.com description: The email field of the account can optionally be chosen e.g. for contact purposes (in order to reach the responsible person for the account). maxLength: 256 solution: type: string description: 'Represents the supported solutions within the account: - HOME if the account contains household-like systems. - CHARGE if the account is used solely for charging station fleet management. - GENERAL if unsure what the account should contain or if it''s a mix of multiple solutions. - SMART_DISTRICT if the account is used solely for smart district management. If not set, the parent account''s solution will be assumed. ' enum: - HOME - CHARGE - GENERAL - SMART_DISTRICT - MICROGRID - HOME_VIRTUAL_METERING - COMMERCIAL - CUSTOM_P2P x-readme-ref-name: InventoryAccountSolution x-readme-ref-name: InventoryAbstractAccount - properties: id: type: string format: uuid example: 49a4f165-8233-426b-a1a4-e569665a25dd description: Uniquely identifies the account. parentID: type: string format: uuid example: 19a4f165-8233-426b-a1a4-e569665a25dd description: Parent of the account for a tree-like account structure. Only the root account does not have a parent ID. createdAt: type: string format: date-time description: Specifies when the account was created. updatedAt: type: string format: date-time description: Specifies when the account was updated. systemsCount: type: integer description: SystemCount is the number of systems assigned to this account example: 1 kind: type: string readOnly: true enum: - b2b - end-user description: If b2b, the account is a regular account. If end-user, the account is a customer account which contains just one user. x-readme-ref-name: AccountKind mainAddress: title: Address description: Represents a physical address of a customer. allOf: - type: object properties: city: description: The city of the location. type: string example: Aachen country: description: The country of the location. type: string example: Germany addressLine1: description: 'First line of the location''s address, typically containing the main information such as the street name and house number. ' type: string example: Oppenhoffallee 143 addressLine2: description: 'Second line of the location''s address, typically containing additional information such as apartment numbers, suite numbers, or other details that can help in identifying the exact location of the address. ' type: string addressLine3: description: 'Third line of the location''s address, typically containing any other details that can help in identifying the exact location of the address. ' type: string addressLine4: description: 'Fourth line of the location''s address, typically containing any other details that can help in identifying the exact location of the address. ' type: string timeZone: description: The TZ Identifier of the location's timezone. type: string example: Europe/Berlin readOnly: true x-readme-ref-name: InventoryAbstractLocation - type: object properties: postalcode: description: The postal code of the location. type: string example: '52062' region: description: The region of the address. type: string telephone: description: The telephone number of the customer. type: string x-readme-ref-name: InventoryAddress customization: description: Customization can be used to store arbitrary data. required: - id - createdAt - updatedAt x-readme-ref-name: InventoryAccount readOnly: true x-readme-ref-name: EmbeddedAccounts - properties: productOption: type: object allOf: - title: Product Option description: 'A product option describes a set of features whose access should be restricted from or granted to users of a system. Systems can be assigned a product option to manage their access to these features. This is the base type for the more concrete usages and not used directly within operations. ' type: object properties: name: type: string description: Name of the product option. example: Default Product Option description: type: string description: Describes the purpose of the product option. x-readme-ref-name: AbstractProductOption - properties: id: description: Unique identifier of the product option. type: string format: uuid example: d5166f02-8b56-4200-90bd-35d3d17391b4 accountID: description: Unique identifier of the account that owns the product option. type: string format: uuid example: d73b6749-2c32-4bca-ab73-50d8e3744edf isDefault: type: boolean description: Indicates whether the product option should be assigned by default to all systems of the owning account. functionalities: description: The default functionalities that a product option restricts access to. Deprecated - Use `showFunctionalities` and `hideFunctionalities` instead. type: array readOnly: true deprecated: true items: type: object allOf: - description: 'A product functionality describes a feature. It is used to manage access to this feature via product options. This is the base type for the more concrete usages and not used directly within operations. ' type: object properties: name: type: string maxLength: 256 description: Name of the product functionality. example: EV Manager hide: type: boolean description: Indicates whether the product functionality should be hidden or shown. description: type: string description: Describes the purpose of the product functionality. x-readme-ref-name: AbstractProductFunctionality - properties: id: description: Unique identifier of the product functionality. type: string format: uuid example: 4e3392ce-ed94-4946-8a11-665e0443723e required: - id - name - hide x-readme-ref-name: ProductFunctionality hideFunctionalities: readOnly: true description: The default functionalities that a product option restricts access to. Must be of type `hide=true`. type: array items: type: object allOf: - description: 'A product functionality describes a feature. It is used to manage access to this feature via product options. This is the base type for the more concrete usages and not used directly within operations. ' type: object properties: name: type: string maxLength: 256 description: Name of the product functionality. example: EV Manager hide: type: boolean description: Indicates whether the product functionality should be hidden or shown. description: type: string description: Describes the purpose of the product functionality. x-readme-ref-name: AbstractProductFunctionality - properties: id: description: Unique identifier of the product functionality. type: string format: uuid example: 4e3392ce-ed94-4946-8a11-665e0443723e required: - id - name - hide x-readme-ref-name: ProductFunctionality showFunctionalities: readOnly: true description: The extra functionalities that a product option grants access to. Must be of type `hide=false`. type: array items: type: object allOf: - description: 'A product functionality describes a feature. It is used to manage access to this feature via product options. This is the base type for the more concrete usages and not used directly within operations. ' type: object properties: name: type: string maxLength: 256 description: Name of the product functionality. example: EV Manager hide: type: boolean description: Indicates whether the product functionality should be hidden or shown. description: type: string description: Describes the purpose of the product functionality. x-readme-ref-name: AbstractProductFunctionality - properties: id: description: Unique identifier of the product functionality. type: string format: uuid example: 4e3392ce-ed94-4946-8a11-665e0443723e required: - id - name - hide x-readme-ref-name: ProductFunctionality required: - id - accountID - name - isDefault - functionalities - hideFunctionalities - showFunctionalities x-readme-ref-name: ProductOption productOptionUpdatedAt: description: Time at which the system's product option was last changed in RFC3339 format. type: string format: date-time readOnly: true example: '2009-11-10T23:20:50Z' required: - id - name - createdAt - updatedAt x-readme-ref-name: System metadata: type: object readOnly: true description: Provides information about the returned object, such as length of the list and distinct values. properties: hasMore: type: boolean readOnly: true description: "Indicates if there are more results in a list. \nThis enables pagination without looking at the absolute counts in the `counts` object \nthat are not included by default and expensive to calculate.\n\nUse this to enable pagination if you don't really need the counts.\n" nextCursor: type: string readOnly: true description: 'Cursor pointing at the next page, for use with the `cursor` query parameter. Only present when cursor-based pagination is in use and `hasMore` is `true`. ' counts: type: object description: 'This will only be available if explicitly requested with the `includeCounts` query parameter. It provides multiple "counts" of the list that is being returned. ' properties: total: readOnly: true description: "The total number of objects in the list, regardless of any query parameters such as filtering or \npagination.\n" type: integer example: 321 filtered: readOnly: true description: 'The number of objects in the list after the filters have been applied. This ignores pagination and will show how many objects are available with the given filters. This number will always be less than or equal to the `total` count. ' type: integer example: 123 x-readme-ref-name: PaginationMetadata required: - systems - metadata x-readme-ref-name: SystemsList '400': description: Malformed request. content: application/vnd.gridx.v2+json: schema: readOnly: true allOf: - title: General Exception description: Represents a general error structure returned by our REST API. type: object properties: message: type: string description: Message represents the message reported to the user. details: type: array description: 'Details represents detail information for the user to fix this problem ' items: type: string required: - message x-readme-ref-name: GeneralException - title: ClientError - Bad Request description: 'Bad Request indicates that the request body is not a valid JSON or it contains a invalid json type. ' example: message: Problems parsing JSON x-readme-ref-name: BadRequestException '403': description: Forbidden. content: application/vnd.gridx.v2+json: schema: readOnly: true allOf: - title: General Exception description: Represents a general error structure returned by our REST API. type: object properties: message: type: string description: Message represents the message reported to the user. details: type: array description: 'Details represents detail information for the user to fix this problem ' items: type: string required: - message x-readme-ref-name: GeneralException - title: UnauthorizedError - Forbidden Error description: Forbidden Error example: message: Bad credentials x-readme-ref-name: ForbiddenException '500': description: There has been an internal error on our side. We're looking into it. content: application/vnd.gridx.v2+json: schema: readOnly: true allOf: - title: General Exception description: Represents a general error structure returned by our REST API. type: object properties: message: type: string description: Message represents the message reported to the user. details: type: array description: 'Details represents detail information for the user to fix this problem ' items: type: string required: - message x-readme-ref-name: GeneralException - title: ServerSideError - Internal Server Error description: Internal Server Error example: message: Internal Server Error x-readme-ref-name: InternalException security: - HeaderAuth: - SystemsRead x-code-samples: - lang: python label: Python source: 'import requests url = "https://api.gridx.de/systems/list" headers = {"accept": "application/vnd.gridx.v2+json"} response = requests.get(url, headers=headers) print(response.text)' - lang: shell label: Shell source: "curl --request GET \\\n --url https://api.gridx.de/systems/list \\\n --header 'accept: application/vnd.gridx.v2+json'" - lang: go label: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io\"\n)\n\nfunc main() {\n\n\turl := \"https://api.gridx.de/systems/list\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"accept\", \"application/vnd.gridx.v2+json\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := io.ReadAll(res.Body)\n\n\tfmt.Println(string(body))\n\n}" - lang: javascript label: Javascript source: "const options = {method: 'GET', headers: {accept: 'application/vnd.gridx.v2+json'}};\n\nfetch('https://api.gridx.de/systems/list', options)\n .then(res => res.json())\n .then(res => console.log(res))\n .catch(err => console.error(err));" - lang: java label: Java source: "OkHttpClient client = new OkHttpClient();\n\nRequest request = new Request.Builder()\n .url(\"https://api.gridx.de/systems/list\")\n .get()\n .addHeader(\"accept\", \"application/vnd.gridx.v2+json\")\n .build();\n\nResponse response = client.newCall(request).execute();" - lang: java label: Kotlin source: "val client = OkHttpClient()\n\nval request = Request.Builder()\n .url(\"https://api.gridx.de/systems/list\")\n .get()\n .addHeader(\"accept\", \"application/vnd.gridx.v2+json\")\n .build()\n\nval response = client.newCall(request).execute()" - lang: javascript label: Swift source: 'import Foundation let url = URL(string: "https://api.gridx.de/systems/list")! var request = URLRequest(url: url) request.httpMethod = "GET" request.timeoutInterval = 10 request.allHTTPHeaderFields = ["accept": "application/vnd.gridx.v2+json"] let (data, _) = try await URLSession.shared.data(for: request) print(String(decoding: data, as: UTF8.self))' - lang: csharp label: C# source: 'using RestSharp; var options = new RestClientOptions("https://api.gridx.de/systems/list"); var client = new RestClient(options); var request = new RestRequest(""); request.AddHeader("accept", "application/vnd.gridx.v2+json"); var response = await client.GetAsync(request); Console.WriteLine("{0}", response.Content); ' servers: - url: https://api.gridx.de description: Production /systems/{systemID}: get: operationId: getSystem summary: Retrieve a System description: 'Retrieves the details of an existing system. **Important**: Make use of `include` query param whenever possible! By default all fields of a system are included. This is very expensive and takes a long time. To save compute resources and allow fast response times, use `include` to include only the fields you need. If you don''t need any include field, use `include=-` to not include anything unnecessary. Setting the parameter to an empty value risks that it gets omitted by accident, so it''s better to set it to "-", to make sure it''s really present.' tags: - System parameters: - name: systemID description: 'Unique identifier used to access a system. ' in: path required: true schema: type: string format: uuid example: aa3e5a93-bb38-4b15-b7f2-af40daf3a1dc - name: include description: 'This query param allows to set certain fields only when needed. This makes the request faster as it requires to load only necessary data. If this param is set, only the specified fields are included. All other fields, which are possible to include, will be excluded then. ' in: query explode: false schema: type: array items: type: string enum: - gateways - accounts - location - priorities - appliancePriorities - status - gatewayStatus - parentID - visibleFields - visibleAppliances - productOption - assetsGatewayType responses: '200': description: Returned system. content: application/vnd.gridx.v2+json: schema: title: System description: "A System represents the logical view of one gateway and its appliances.\n\nFor example, a household can be represented as a system with a gateway such as a \ngridBox, and its connected appliances.\n" allOf: - title: System description: "A System represents the logical view of one gateway and its appliances.\n \nFor example, a household can be represented as a system with a gateway such as a \ngridBox, and its connected appliances.\n" type: object allOf: - title: System description: "A System represents the logical view of one gateway and its appliances.\n\nFor example, a household can be represented as a system with a gateway such as a \ngridBox, and its connected appliances.\n" properties: name: type: - string - 'null' maxLength: 200 description: Name of the System. example: gridX Headquarter solution: type: string description: "Represents the solution that the system uses:\n- HOME if the system is for a household. \n- CHARGE if the system is for charging station fleet management.\n" x-extensible-enum: - HOME - CHARGE - GENERAL - SMART_DISTRICT - MICROGRID - HOME_VIRTUAL_METERING - COMMERCIAL - CUSTOM_P2P x-readme-ref-name: SystemSolution priorities: description: Allows prioritisation of EMS functionalities by appliance type. Accepted values are ["BATTERY", "EV", "HEATPUMP", "HEATER"]. type: array items: type: string example: - EV - BATTERY appliancePriorities: type: array description: 'Allows prioritisation of EMS functionalities by appliance UUIDs. This option takes precendence over `priorities` field as it is more explicit. ' items: type: string format: uuid plan: description: "Charge plan of the system. Must be one of two possible options: \n * `2020_DLM_EVS_00` - Use this value for Dynamic Load Management.\n * `2020_SLM_EVS_00` - Use this value for Static Load Management.\n" type: string x-extensible-enum: - 2020_DLM_EVS_00 - 2020_SLM_EVS_00 x-readme-ref-name: SystemChargePlan operatingSince: type: string format: date-time description: Date since when the system is active in RFC3339 format. example: '2017-12-23T10:15:40Z' curtailmentStrategy: type: string deprecated: true description: "Deprecated: Only EQUALLY remains available and future implementations will likely use another field name.\nThe curtailment strategy describes how appliances shall be curtailed.\n * EQUALLY: Every appliance gets equally (fair) curtailed.\n" x-extensible-enum: - EQUALLY x-readme-ref-name: SystemCurtailmentStrategy location: title: Location description: Represents a GPS location with longitude and latitude. type: object allOf: - type: object properties: city: description: The city of the location. type: string example: Aachen country: description: The country of the location. type: string example: Germany addressLine1: description: 'First line of the location''s address, typically containing the main information such as the street name and house number. ' type: string example: Oppenhoffallee 143 addressLine2: description: 'Second line of the location''s address, typically containing additional information such as apartment numbers, suite numbers, or other details that can help in identifying the exact location of the address. ' type: string addressLine3: description: 'Third line of the location''s address, typically containing any other details that can help in identifying the exact location of the address. ' type: string addressLine4: description: 'Fourth line of the location''s address, typically containing any other details that can help in identifying the exact location of the address. ' type: string timeZone: description: The TZ Identifier of the location's timezone. type: string example: Europe/Berlin readOnly: true x-readme-ref-name: InventoryAbstractLocation - type: object properties: country: deprecated: true description: 'Deprecated - Instead of this freeform text field, use countryCode ' countryCode: type: string description: Country code in ISO 3166-1 alpha-2. example: DE enum: - AF - AX - AL - DZ - AS - AD - AO - AI - AQ - AG - AR - AM - AW - AU - AT - AZ - BS - BH - BD - BB - BY - BE - BZ - BJ - BM - BT - BO - BQ - BA - BW - BV - BR - IO - BN - BG - BF - BI - CV - KH - CM - CA - KY - CF - TD - CL - CN - CX - CC - CO - KM - CG - CD - CK - CR - CI - HR - CU - CW - CY - CZ - DK - DJ - DM - DO - EC - EG - SV - GQ - ER - EE - SZ - ET - FK - FO - FJ - FI - FR - GF - PF - TF - GA - GM - GE - DE - GH - GI - GR - GL - GD - GP - GU - GT - GG - GN - GW - GY - HT - HM - VA - HN - HK - HU - IS - IN - ID - IR - IQ - IE - IM - IL - IT - JM - JP - JE - JO - KZ - KE - KI - KP - KR - KW - KG - LA - LV - LB - LS - LR - LY - LI - LT - LU - MO - MG - MW - MY - MV - ML - MT - MH - MQ - MR - MU - YT - MX - FM - MD - MC - MN - ME - MS - MA - MZ - MM - NA - NR - NP - NL - NC - NZ - NI - NE - NG - NU - NF - MK - MP - 'NO' - OM - PK - PW - PS - PA - PG - PY - PE - PH - PN - PL - PT - PR - QA - RE - RO - RU - RW - BL - SH - KN - LC - MF - PM - VC - WS - SM - ST - SA - SN - RS - SC - SL - SG - SX - SK - SI - SB - SO - ZA - GS - SS - ES - LK - SD - SR - SJ - SE - CH - SY - TW - TJ - TZ - TH - TL - TG - TK - TO - TT - TN - TR - TM - TC - TV - UG - UA - AE - GB - US - UM - UY - UZ - VU - VE - VN - VG - VI - WF - EH - YE - ZM - ZW x-readme-ref-name: LocationCountryCode postalCode: description: The postal code of the location. type: string example: '52062' longitude: description: The geographic coordinate that specifies the east–west position of the location. type: number example: 6.09294299 readOnly: true latitude: description: The geographic coordinate that specifies the north–south position of the location. type: number example: 50.77441934 readOnly: true x-readme-ref-name: Location metadata: title: Metadata description: Represents system's metadata. type: object properties: wizard: title: Wizard type: object description: Represents the metadata to keep track of the current wizard step. required: - step properties: step: description: Represents the current wizard step. type: string x-extensible-enum: - WELCOME - STARTCODE - GRIDBOX_STATUS - SYSTEM_TYPE_SELECT - ACCOUNT_ASSIGNMENT - PERSONAL_INFORMATION - SYSTEM_OVERVIEW - SYSTEM_CHILDREN_SETUP - SYSTEM_SETUP - PARAGRAPH_14A - ENERGYMANAGEMENT - HEATING_ROD - ENERGYMANAGEMENT_ACTIVATION - ENERGY_SUPPLIER - SYSTEM_CHECK - DONE - ELECTRICITY_TARIFF_V2 - KOSTAL_CONFIGURATION - ENPHASE_CONNECTION - EEBUS_PAIRING - SONNEN_CONNECTION - IO_DEVICE_CONFIGURATION - IO_DEVICE_HEAT_PUMP_CONFIGURATION - TROUBLESHOOT_INSTALLATION - INSTALLER_HUB - ENA_G100 - PV_SYSTEM - FUSE_PROTECTION - ENERGY_OPTIMIZATION - UNKNOWN firstCompletedAt: description: Represents the date and time when the final wizard step was completed first time. type: string format: date-time readOnly: true example: '2025-06-22T00:00:00Z' version: description: Represents the version of wizard. type: integer x-extensible-enum: - 1 - 2 - 3 x-readme-ref-name: MetadataWizard energy: title: Energy Metadata type: object description: represents the metadata related to the energy use case. properties: installer: type: - string - 'null' description: Installer is the person who has installed the systems. norminalPower: type: - number - 'null' minimum: 0 description: 'The system''s maximal power production in W (for historical reasons the word "norminal" is used instead of the correct term "nominal power"). *Deprecated* - Use `nominalPower` instead (in mW!). ' deprecated: true nominalPower: type: - number - 'null' minimum: 0 description: The system's maximal power production in mW. 0 is used if unset. curtailment: type: - number - 'null' description: Curtailment is the percentage of system's nominal power at which the pv inverters should stop feeding into the grid. (0-1) heatingSystem: type: - string - 'null' description: HeatingSystem represents the type of the heating system. agreedEMSTerms: type: - boolean - 'null' deprecated: true description: 'AgreedEMSTerms indicates if the customers accepts the ems terms. *Deprecated* - Use `MetadataEMS.agreedEMSTerms` instead. ' ems: title: MetadataEMS type: object description: MetadataEMS represents the energy management allowances. properties: agreedEMSTerms: type: - boolean - 'null' description: AgreedEMSTerms indicates if the customers accepts the ems terms. enabledEMS: type: - boolean - 'null' description: EnabledEMS indicates if gridBox should activate the ems. agreedDynamicPVControlTerms: type: - boolean - 'null' description: AgreedDynamicPVControlTerms indicates if the customer accepts the dynamic pc control terms. enabledDynamicPVControl: type: - boolean - 'null' description: EnabledDynamicPVControl indicates if the gridBox should activate the dynamic pv control. enabledInverterGCPControl: type: - boolean - 'null' description: 'EnabledInverterGCPControl indicates if the gridBox should activate the inverter gcp control. *Deprecated* - This is automatically detected by the gridbox. If this field is unset or false, the gridbox will determine inverter GCP control activation automatically. ' deprecated: true agreedForecastBasedEMSTerms: type: - boolean - 'null' description: '*Deprecated* Feature is deprecated and will be removed in a future release. ' deprecated: true enabledForecastBasedEMS: type: - boolean - 'null' description: '*Deprecated* Feature is deprecated and will be removed in a future release. ' deprecated: true agreedPriorityConfigurationTerms: type: - boolean - 'null' description: AgreedPriorityConfigurationTerms indicates if the customer accepts the priority configuration terms. enabledPriorityConfiguration: type: - boolean - 'null' description: EnabledPriorityConfiguration indicates if the gridBox should activate the priority configuration. agreedPowerManagementTerms: type: - boolean - 'null' description: AgreedPowerManagementTerms indicates if the customer accepts the power management terms. enabledPowerManagement: type: - boolean - 'null' description: EnabledPowerManagement indicates if the gridBox should activate the power management. enabledStaticPowerManagement: type: - boolean - 'null' description: EnabledStaticPowerManagement indicates if the gridBox should activate the static power management. enabledPowerImportPeakOptimization: type: - boolean - 'null' description: EnabledPowerImportPeakOptimization indicates if the gridBox should activate the 15min avg. energy optimization algorithm. powerImportPeakPerOptimizationInterval: type: - number - 'null' format: double deprecated: true description: 'Describes the amount of imported energy in a 15 minutes interval in VA. Deprecated: Use powerImportPeakPerOptimizationIntervalmVA instead. ' powerImportPeakPerOptimizationIntervalmVA: type: - number - 'null' format: double description: Defines the average power in a 15 minute interval in mVA for peak shaving. enabledBatteryFullGridCharge: type: - boolean - 'null' description: '*Deprecated* Feature is deprecated and will be removed in a future release. The default behaviour is to always allow charging with full power and the setting is not required anymore. ' deprecated: true enabledLessConstrainingSOCLimits: type: - boolean - 'null' description: '*Deprecated* Feature is deprecated and will be removed in a future release. ' deprecated: true derAPISettings: title: DerAPISettings type: object description: DerAPISettings represents the metadata related to DER API configuration. properties: enabledCloudAPI: type: - boolean - 'null' description: EnabledCloudAPI enables assets control with cloud DER API. constraints: title: SyncEntitySettings type: object description: SyncEntitySettings configures entity synchronisation parameters. properties: syncInterval: type: - number - 'null' format: double description: SyncInterval defines the period in seconds for data to be synchronized between gridBox and cloud DER API. ttl: type: - number - 'null' format: double description: TTL defines the time to live in seconds for entity. disabled: type: boolean description: Disabled disables the sync of entities. x-readme-ref-name: SyncEntitySettings flexibilities: title: SyncEntitySettings type: object description: SyncEntitySettings configures entity synchronisation parameters. properties: syncInterval: type: - number - 'null' format: double description: SyncInterval defines the period in seconds for data to be synchronized between gridBox and cloud DER API. ttl: type: - number - 'null' format: double description: TTL defines the time to live in seconds for entity. disabled: type: boolean description: Disabled disables the sync of entities. x-readme-ref-name: SyncEntitySettings x-readme-ref-name: DerAPISettings enabledTimeOfUseOptimization: deprecated: true type: - boolean - 'null' description: 'Indicates if time of use optimization is enabled for the system. *Deprecated* - Use `systems/{systemID}/timeofuse/options` endpoint instead. ' disableAveragePmaxCalculation: type: - boolean - 'null' description: Disables the average pMax calculation. It means EMS will not calculate average pMax and will get the default value instead. excludeApplianceTypes: description: Appliance types to be ignored by the EMS. Updating this field to an empty array clears it. **Please note that this currently requires the box to be restarted to take effect**. type: - array - 'null' items: type: string x-extensible-enum: - HEAT_PUMP evChargingReallocationTolerance: description: Specifies the maximum power in mW that can be drawn to charge an EV in case the PV surplus is not sufficient. type: - number - 'null' format: double example: 500000 enabledPowerWindowHysteresis: description: Configures the system to use the power window hysteresis feature. If unset, the system will behave as if this was activated. Set to false to deactivate. type: - boolean - 'null' x-readme-ref-name: MetadataEMS smartMeterInstallationTimestamp: description: The time the smart meter has been installed (if any), in RFC3339 format. type: - string - 'null' format: date-time example: '2020-09-21T00:00:00Z' x-readme-ref-name: MetadataEnergy energySupplier: title: Energy Supplier type: object description: MetadataEnergySupplier represents the metadata related to energy supplier. properties: type: type: - string - 'null' deprecated: true description: Type determines if gridX is the energy supplier. The value is either "GRIDX" or "OTHER". enum: - GRIDX - OTHER unitPrice: type: - number - 'null' description: UnitPrice is unit price per kWh in EU cent. Deprecated - Use TariffV2 instead. deprecated: true installment: type: - number - 'null' description: Installment is the monthly payment. baseFee: type: - number - 'null' description: BaseFee is the monthly base fee. feedInTariff: type: - number - 'null' description: FeedInTariff is the cost-based compensation in EUR cent for feeding in. Deprecated - Use TariffV2 instead. deprecated: true expectedConsumption: type: - number - 'null' description: ExpectedConsumption is the expected annual consumption in kWh. x-readme-ref-name: MetadataEnergySupplier smartMeter: title: Smart Meter description: Represents the metadata to report if a smart meter has been installed. type: object properties: installed: type: - boolean - 'null' description: Reports if the smart meter has been installed. hasInstallationDate: type: - boolean - 'null' description: Reports if the provider has sent us a installation date that can be found in energy metadata. x-readme-ref-name: MetadataSmartMeter x-readme-ref-name: SystemMetadata x-readme-ref-name: AbstractSystem - properties: id: type: string format: uuid readOnly: true description: Unique identifier of a system. example: aa3e5a93-bb38-4b15-b7f2-af40daf3a1dc createdAt: type: string format: date-time readOnly: true description: Date when the system was created in RFC3339 format. example: '2017-12-22T14:20:50Z' updatedAt: type: string format: date-time readOnly: true description: Date when the system was last updated in RFC3339 format. example: '2017-12-24T08:33:00Z' chargingIntervals: type: array readOnly: true description: Displays charging intervals of the system's EV charging stations. items: title: EV Charging Schedule type: object allOf: - title: EV Charging Schedule description: 'An Electric Vehicle charging schedule represents an interval in which the electric vehicle is supposed to charge at a defined limit. ' type: object properties: from: type: string format: date-time example: '2021-11-04T00:00:00Z' description: 'Specifies when the schedule should start in RFC3339 format. ' to: type: string format: date-time example: '2021-11-04T00:30:00Z' description: 'Specifies when the schedule should end in RFC3339 format. ' limit: description: 'The maximum amount of power in Watts that will be used for scheduling charging in the interval [from, to]. ' example: 75000 title: Positive Power in Watt. type: integer format: int64 minimum: 0 x-readme-ref-name: PositivePower x-readme-ref-name: AbstractEVChargingSchedule - properties: id: type: string format: uuid example: ec4d0c89-a604-49ac-82f0-427f9cb42204 readOnly: true updatedAt: type: string format: date-time readOnly: true description: Specifies when the schedule was updated the last time. - required: - id - from - to - limit x-readme-ref-name: EVChargingSchedule gateways: description: The gateways of which this system is comprised. type: array readOnly: true items: allOf: - title: Gateway description: 'A gateway used to monitor and control appliances. For instance, our beloved gridbox is a gateway. ' type: object properties: name: deprecated: true type: string maxLength: 255 description: Name of the gateway. debugModeUntil: deprecated: true type: string format: date-time description: 'Date until which debug messages are logged in RFC3339 format. **Deprecated**: defaults to `createdAt` + 3 days. ' x-readme-ref-name: AbstractGateway - properties: id: type: string format: uuid example: 6dd0a658-5828-4d30-bc65-a03c6d6e425f description: Unique identifier of a gateway. readOnly: true type: type: string description: 'Type of the gateway. **Deprecated** - Non-physical gateways will no longer be supported from 01.03.2024. This field will consequently be removed. ' deprecated: true enum: - VIRTUAL - PHYSICAL - OTHER x-readme-ref-name: GatewayType createdAt: type: string format: date-time readOnly: true description: Date when the Gateway was created in RFC3339 format. updatedAt: type: string format: date-time readOnly: true description: Date when the Gateway was last updated in RFC3339 format. registeredAt: deprecated: true type: string format: date-time readOnly: true description: 'Date when the Gateway was first registered in RFC3339 format. **Deprecated**: defaults to `createdAt`. ' connectionStatus: title: Connection Status type: object readOnly: true properties: status: type: string description: "Indicates the connection status. Is one of:\n * `AVAILABLE`: Gateway has sent data in the last 5 minutes\n * `TEMPORARILY_UNAVAILABLE`: Gateway has not sent data in the last 5 minutes\n * `UNAVAILABLE`: Gateway has not sent data in the last 24 hours\n * `UNKNOWN`: Gateway was never online and never sent data or the connection status can't be determined." enum: - AVAILABLE - TEMPORARILY_UNAVAILABLE - UNAVAILABLE - UNKNOWN contactedAt: type: string format: date-time deprecated: true description: 'When the gateway/appliance has last contacted the gridX cloud. In case the gateway was never online and never sent data, this field is null. Deprecated: Gateway heartbeats will be removed in future versions and this will be only estimated. Use `statusChangedAt` instead. ' statusChangedAt: type: string format: date-time description: 'When the gateway status last changed. In case the gateway was never online this field is null. ' required: - status x-readme-ref-name: ConnectionStatus vendorID: deprecated: true description: 'ID of the vendor account to which the corresponding system is assigned. **Deprecated**: omitted from responses by default. ' type: string format: uuid example: 6dd0a658-5828-4d30-bc65-a03c6d6e425f startcode: description: Code used to register a new gateway. type: string example: 39FDDF7D85BAAD2D manufacturer: deprecated: true description: 'Manufacturer of the gateway. **Deprecated**: defaults to `gridX`. ' type: string example: gridX readOnly: true model: description: Model of the gateway. type: string example: 2.00P-X readOnly: true serialnumber: description: Serial number of the gateway. type: string example: C083-200-000-000-199-P-X readOnly: true additionalIdentifiers: description: Additional identifiers used by the gateway. type: array items: title: Additional identifiers of the gridBox. description: Additional identifiers used by the gridBox. type: object properties: service: type: string readOnly: true description: The service this identifier is referring to, e.g the protocol used for the appliance-gridBox handshake example: EEBUS type: type: string readOnly: true description: The type of the identifier. example: SKI enum: - UNKNOWN - SKI identifier: type: string readOnly: true description: The actual identifier, e.g "SKI" used in the TLS certificate for the communication. If type is "SKI", it is hexadecimal-encoded. x-readme-ref-name: AdditionalIdentifier readOnly: true scanners: type: array readOnly: true description: List of scanner names that are enabled for this gateway. items: type: string description: The name of the scanner which searches for the appliance in the network. example: SMA_INVERTER_IGMP_HOST_DISCOVERY x-extensible-enum: - SMA_INVERTER_IGMP_HOST_DISCOVERY - SMA_INVERTER_ARP_HOST_DISCOVERY - SMA_METER - BCONTROL_METER - SOLAREDGE_INVERTER_METER_MODBUS_TCP - SOLAREDGE_INVERTER_METER_MODBUS_RTU - SOLARLOG_MONITOR - CUSTOMER_HOLFELDER_METER - CUSTOMER_HOLFELDER_INVERTER - E3DC_INVERTER_METER - KOSTAL_INVERTER - STUDER_INVERTER - FRONIUS_INVERTER - HUAWEI_INVERTER - KEBA_CHARGING_STATION - ECHARGE_CHARGING_STATION - INNOGY_CHARGING_STATION - ELECTRIS_METER - SOLARWATT_INVERTER_METER - ABL_CHARGING_STATION - SIEMENS_PAC_METER - JANITZA_METER - JANITZA_METER_RTU - EVTEC_CHARGING_STATION - HIKING_METER_RTU - EEBUS_FUEL_CELL_METER - KOSTAL_INVERTER_PLENTICORE - SONNENBATTERIE_UPNP - VIRTUAL_METER - MENNEKES_UPNP - ANYBUS_MBUS_CONVERTER_METER - EEBUS_GENERIC - SIMULATION_GENERIC - ALFEN_NG9XX_MODBUS_CHARGING_STATION - ALPITRONIC_HYPERCHARGER_MODBUS_CHARGING_STATION - MY_PV_AC_THOR_HEATER - COMPLEO_MODBUS_CHARGING_STATION - OCPP_CHARGING_STATION - BENDER_CHARGING_STATION - VOLTERION_REDOX_FLOW_BATTERY - XNET_METER - RSW_METER - SCHNEIDER_METER - INNOGY_MODBUS_CHARGING_STATION - MENNEKES_PREMIUM_MODBUS_CHARGING_STATION - PLPLANO_MODBUS_RTU_METER - HEIDELBERG_ENERGY_CONTROL_MODBUS_RTU_CHARGING_STATION - CARLO_GAVAZZI_MODBUS_RTU_METER - VESTEL_CHARGING_STATION - INNOTEC_HEAT_PUMP - WALLBE_MODBUS_CHARGING_STATION - EVBOX_MAX_CHARGING_STATION - ISKRAEMECO_METER - SUNGROW_MODBUS_INVERTER - WAGO_IO_DEVICE - GOE_CHARGING_STATION - XNET_CLOUD_HEAT_PUMP - XNET_CLOUD_GENERIC - LANDIS_GYR_METER - POWERDALE_CHARGING_STATION - EASTRON_SDM230_METER - EASTRON_SDM72DM_METER - ZUCCHETTI_CONNEXT_BOX - PLVARIO_ENERGY_METER_EM3 - ABB_OPC_UA_CHARGING_STATION - DATA_LOGGER_DEVICE - POWERSIDE_METER - PPC_METER - RUTENBECK_TCR_IP4_IO_DEVICE - JEAN_MUELLER_PL_MULTI_METER - ENPHASE_ENVOY_S_GATEWAY - SOLAX_MODBUS_RTU_INVERTER - ALPHA_ESS_HI10_HYBRID_INVERTER - ZUCCHETTI_MODBUS_RTU_INVERTER - STIEBEL_ELTRON_MODBUS_TCP_HEAT_PUMP - MENNEKES_AMTRON_COMPACT_2S_MODBUS_RTU_CHARGING_STATION - SAIA_PCD1_E_LINE_HEAT_PUMP - SUNGROW_SG_MODBUS_INVERTER - SOLAX_MODBUS_TCP_INVERTER - PHOENIX_CONTACT_EM_PRO_METER - DAIKIN_HOMEHUB_MODBUS_TCP_HEAT_PUMP - SOLPLANET_MODBUS_TCP_INVERTER - SUNGROW_SHXRS_SHXT_MODBUS_INVERTER - KOSTAD_DC_CHARGING_STATION - GIVENERGY_GIV_TCP_INVERTER - FOX_ESS_MODBUS_TCP_INVERTER - SHELLY_HTTP_METER - PIXII_MODBUS_TCP_BESS - GOODWE_MODBUS_TCP_INVERTER - READY_FOR_GRIDX - KOSTAL_ENECTOR_CHARGING_STATION - MENNEKES_4YOU_CHARGING_STATION - EKOENERGETYKA_CHARGING_STATION - VIESSMANN_EEBUS_INVERTER_AND_HEAT_PUMP - VAILLANT_EEBUS_HEAT_PUMP - PROLAN_EEBUS_STB - PPC_EEBUS_METER - THEBEN_SE_EEBUS_METER - DAIKIN_ALTHERMA4_MODBUS_TCP_HEAT_PUMP - FOXESS_CHARGING_STATION - BOSCH_BUDERUS_EEBUS_HEAT_PUMP - KOSTAL_EBOX_DC_B11_EEBUS_CHARGING_STATION - SOLPLANET_IBC_SOLAR_CHARGING_STATION - ADS_TEC_CHARGING_STATION - WOLF_EEBUS_HEAT_PUMP - SHELLY_3EMPRO_HTTP_METER - SHELLY_PRO2_HTTP_IO_DEVICE - SWISTEC_EEBUS_METER - BMW_DC_WALLBOX_EEBUS_CHARGING_STATION - SUNGROW_CHARGING_STATION - ETREL_INCH_DUO_CHARGING_STATION - ALPHAESS_SMILE_G3_T4_T10 - SUNGROW_EMS300CP_BESS - HUAWEI_SMART_LOGGER_BESS - SOLAX_MODBUS_TCP_METER x-readme-ref-name: ScannerName applianceComposition: type: array readOnly: true description: Appliance types that are connected to the gateway for overview purposes. example: - HEAT_PUMP items: type: string required: - id - type - connectionStatus - createdAt - updatedAt x-readme-ref-name: Gateway status: type: string readOnly: true deprecated: true enum: - UNDEFINED - OK - WARNING - ERROR description: "Status of the system: \n * `OK`: If the attached gateway is reported as ONLINE.\n * `WARNING`: If the attached gateway is reported as OFFLINE but less than 24h ago.\n * `ERROR`: If the attached gateway is reported as OFFLINE for more than 24h ago. \n * `UNDEFINED`: otherwise\n\n**Deprecated** - Use `gatewayStatus` instead.\n" gatewayStatus: type: string readOnly: true description: "Status of the system's gateway: \n * `AVAILABLE` - The gateway is reported as ONLINE.\n * `UNAVAILABLE` - The gateway is reported as OFFLINE.\n * `UNKNOWN` - The system has no gateway, or the gateway status is not known.\n\nIf you need more granularity, you can use the `connectionStatus` in `gateways` instead.\n" enum: - AVAILABLE - UNAVAILABLE - UNKNOWN assetsStatus: type: object readOnly: true description: 'Provides information about the system''s health, such as the computed combined status of all of its assets as well as their respective counts. Only included in the response if filtered by using the `filterBy` parameter, or included via the `include` parameter. ' properties: status: type: string description: 'The combined status of all of this system''s assets according to the following rules: AVAILABLE → All the assets are successfully connected in the last 5 minutes. UNHEALTHY → Only some assets are successfully connected in the last 5 minutes. UNAVAILABLE → No assets are successfully connected in the last 5 minutes. UNKNOWN → Fallback, e.g. system without assets or all assets have an unknown status. ' enum: - UNKNOWN - UNAVAILABLE - UNHEALTHY - AVAILABLE unknownCount: readOnly: true description: 'The total number of assets for which there is no status information. ' type: integer example: 321 unavailableCount: readOnly: true description: 'The total number of assets which have connected in the past but not in the past 5 minutes. ' type: integer example: 321 availableCount: readOnly: true description: 'The total number of assets which have connected in the past 5 minutes. ' type: integer example: 321 assetsKinds: type: array readOnly: true description: 'Provides information about the distinct kinds of assets attached to a system. Only included in the response if filtered by using the `filterBy` parameter, or included via the `include` parameter. ' items: type: string x-extensible-enum: - AIR_CONDITIONER - BATTERY - BTTP - CLUSTER - EV - EVSTATION - FUEL_CELL - GRID - HEAT_PUMP - HEAT_PUMP_EXTERNAL - HEATER - HEATING - HYBRID - IO_DEVICE - MISC - PV - PV_EXTERNAL - UNKNOWN - WIND_TURBINE assetsGatewayType: type: string readOnly: true description: 'Provides information about the gateway type of assets attached to a system. Returns HYBRID when both CLOUD and GRIDBOX assets are present. Omitted when the system has no assets. Only included in the response if filtered by using the `filterBy` parameter, or included via the `include` parameter. ' enum: - CLOUD - GRIDBOX - HYBRID tags: type: array readOnly: true description: 'Provides information about the distinct tags attached to a system. Only included in the response if filtered by using the `filterBy` parameter, or included via the `include` parameter. ' items: type: object properties: name: type: string value: type: string x-readme-ref-name: SystemWithoutProductOption - title: Embedded accounts description: 'Hierarchy of accounts the system belongs to, from the authenticated account down to the end customer''s. ' type: object properties: accounts: type: array items: title: Account description: 'An account describes an organizational unit to manage access to systems for one or multiple users. ' type: object readOnly: true allOf: - title: Account description: 'An account describes an organizational unit to manage access to systems for one or multiple users. This is the base type for the more concrete usages and not used directly within operations. ' type: object properties: name: type: string example: John Doe description: Name of the account, can be chosen freely but should be kept terse and descriptive. minLength: 1 maxLength: 256 email: type: string example: john@doe.com description: The email field of the account can optionally be chosen e.g. for contact purposes (in order to reach the responsible person for the account). maxLength: 256 solution: type: string description: 'Represents the supported solutions within the account: - HOME if the account contains household-like systems. - CHARGE if the account is used solely for charging station fleet management. - GENERAL if unsure what the account should contain or if it''s a mix of multiple solutions. - SMART_DISTRICT if the account is used solely for smart district management. If not set, the parent account''s solution will be assumed. ' enum: - HOME - CHARGE - GENERAL - SMART_DISTRICT - MICROGRID - HOME_VIRTUAL_METERING - COMMERCIAL - CUSTOM_P2P x-readme-ref-name: InventoryAccountSolution x-readme-ref-name: InventoryAbstractAccount - properties: id: type: string format: uuid example: 49a4f165-8233-426b-a1a4-e569665a25dd description: Uniquely identifies the account. parentID: type: string format: uuid example: 19a4f165-8233-426b-a1a4-e569665a25dd description: Parent of the account for a tree-like account structure. Only the root account does not have a parent ID. createdAt: type: string format: date-time description: Specifies when the account was created. updatedAt: type: string format: date-time description: Specifies when the account was updated. systemsCount: type: integer description: SystemCount is the number of systems assigned to this account example: 1 kind: type: string readOnly: true enum: - b2b - end-user description: If b2b, the account is a regular account. If end-user, the account is a customer account which contains just one user. x-readme-ref-name: AccountKind mainAddress: title: Address description: Represents a physical address of a customer. allOf: - type: object properties: city: description: The city of the location. type: string example: Aachen country: description: The country of the location. type: string example: Germany addressLine1: description: 'First line of the location''s address, typically containing the main information such as the street name and house number. ' type: string example: Oppenhoffallee 143 addressLine2: description: 'Second line of the location''s address, typically containing additional information such as apartment numbers, suite numbers, or other details that can help in identifying the exact location of the address. ' type: string addressLine3: description: 'Third line of the location''s address, typically containing any other details that can help in identifying the exact location of the address. ' type: string addressLine4: description: 'Fourth line of the location''s address, typically containing any other details that can help in identifying the exact location of the address. ' type: string timeZone: description: The TZ Identifier of the location's timezone. type: string example: Europe/Berlin readOnly: true x-readme-ref-name: InventoryAbstractLocation - type: object properties: postalcode: description: The postal code of the location. type: string example: '52062' region: description: The region of the address. type: string telephone: description: The telephone number of the customer. type: string x-readme-ref-name: InventoryAddress customization: description: Customization can be used to store arbitrary data. required: - id - createdAt - updatedAt x-readme-ref-name: InventoryAccount readOnly: true x-readme-ref-name: EmbeddedAccounts - properties: productOption: type: object allOf: - title: Product Option description: 'A product option describes a set of features whose access should be restricted from or granted to users of a system. Systems can be assigned a product option to manage their access to these features. This is the base type for the more concrete usages and not used directly within operations. ' type: object properties: name: type: string description: Name of the product option. example: Default Product Option description: type: string description: Describes the purpose of the product option. x-readme-ref-name: AbstractProductOption - properties: id: description: Unique identifier of the product option. type: string format: uuid example: d5166f02-8b56-4200-90bd-35d3d17391b4 accountID: description: Unique identifier of the account that owns the product option. type: string format: uuid example: d73b6749-2c32-4bca-ab73-50d8e3744edf isDefault: type: boolean description: Indicates whether the product option should be assigned by default to all systems of the owning account. functionalities: description: The default functionalities that a product option restricts access to. Deprecated - Use `showFunctionalities` and `hideFunctionalities` instead. type: array readOnly: true deprecated: true items: type: object allOf: - description: 'A product functionality describes a feature. It is used to manage access to this feature via product options. This is the base type for the more concrete usages and not used directly within operations. ' type: object properties: name: type: string maxLength: 256 description: Name of the product functionality. example: EV Manager hide: type: boolean description: Indicates whether the product functionality should be hidden or shown. description: type: string description: Describes the purpose of the product functionality. x-readme-ref-name: AbstractProductFunctionality - properties: id: description: Unique identifier of the product functionality. type: string format: uuid example: 4e3392ce-ed94-4946-8a11-665e0443723e required: - id - name - hide x-readme-ref-name: ProductFunctionality hideFunctionalities: readOnly: true description: The default functionalities that a product option restricts access to. Must be of type `hide=true`. type: array items: type: object allOf: - description: 'A product functionality describes a feature. It is used to manage access to this feature via product options. This is the base type for the more concrete usages and not used directly within operations. ' type: object properties: name: type: string maxLength: 256 description: Name of the product functionality. example: EV Manager hide: type: boolean description: Indicates whether the product functionality should be hidden or shown. description: type: string description: Describes the purpose of the product functionality. x-readme-ref-name: AbstractProductFunctionality - properties: id: description: Unique identifier of the product functionality. type: string format: uuid example: 4e3392ce-ed94-4946-8a11-665e0443723e required: - id - name - hide x-readme-ref-name: ProductFunctionality showFunctionalities: readOnly: true description: The extra functionalities that a product option grants access to. Must be of type `hide=false`. type: array items: type: object allOf: - description: 'A product functionality describes a feature. It is used to manage access to this feature via product options. This is the base type for the more concrete usages and not used directly within operations. ' type: object properties: name: type: string maxLength: 256 description: Name of the product functionality. example: EV Manager hide: type: boolean description: Indicates whether the product functionality should be hidden or shown. description: type: string description: Describes the purpose of the product functionality. x-readme-ref-name: AbstractProductFunctionality - properties: id: description: Unique identifier of the product functionality. type: string format: uuid example: 4e3392ce-ed94-4946-8a11-665e0443723e required: - id - name - hide x-readme-ref-name: ProductFunctionality required: - id - accountID - name - isDefault - functionalities - hideFunctionalities - showFunctionalities x-readme-ref-name: ProductOption productOptionUpdatedAt: description: Time at which the system's product option was last changed in RFC3339 format. type: string format: date-time readOnly: true example: '2009-11-10T23:20:50Z' required: - id - name - createdAt - updatedAt x-readme-ref-name: System '403': description: Forbidden. content: application/vnd.gridx.v2+json: schema: readOnly: true allOf: - title: General Exception description: Represents a general error structure returned by our REST API. type: object properties: message: type: string description: Message represents the message reported to the user. details: type: array description: 'Details represents detail information for the user to fix this problem ' items: type: string required: - message x-readme-ref-name: GeneralException - title: UnauthorizedError - Forbidden Error description: Forbidden Error example: message: Bad credentials x-readme-ref-name: ForbiddenException '404': description: System not found content: application/vnd.gridx.v2+json: schema: readOnly: true allOf: - title: General Exception description: Represents a general error structure returned by our REST API. type: object properties: message: type: string description: Message represents the message reported to the user. details: type: array description: 'Details represents detail information for the user to fix this problem ' items: type: string required: - message x-readme-ref-name: GeneralException - title: ClientError - Not Found description: Not Found indicates that the entity was not found. example: message: Not Found x-readme-ref-name: NotFoundException '500': description: There has been an internal error on our side. We're looking into it. content: application/vnd.gridx.v2+json: schema: readOnly: true allOf: - title: General Exception description: Represents a general error structure returned by our REST API. type: object properties: message: type: string description: Message represents the message reported to the user. details: type: array description: 'Details represents detail information for the user to fix this problem ' items: type: string required: - message x-readme-ref-name: GeneralException - title: ServerSideError - Internal Server Error description: Internal Server Error example: message: Internal Server Error x-readme-ref-name: InternalException security: - HeaderAuth: - SystemsRead x-code-samples: - lang: python label: Python source: 'import requests url = "https://api.gridx.de/systems/systemID" headers = {"accept": "application/vnd.gridx.v2+json"} response = requests.get(url, headers=headers) print(response.text)' - lang: shell label: Shell source: "curl --request GET \\\n --url https://api.gridx.de/systems/systemID \\\n --header 'accept: application/vnd.gridx.v2+json'" - lang: go label: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io\"\n)\n\nfunc main() {\n\n\turl := \"https://api.gridx.de/systems/systemID\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"accept\", \"application/vnd.gridx.v2+json\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := io.ReadAll(res.Body)\n\n\tfmt.Println(string(body))\n\n}" - lang: javascript label: Javascript source: "const options = {method: 'GET', headers: {accept: 'application/vnd.gridx.v2+json'}};\n\nfetch('https://api.gridx.de/systems/systemID', options)\n .then(res => res.json())\n .then(res => console.log(res))\n .catch(err => console.error(err));" - lang: java label: Java source: "OkHttpClient client = new OkHttpClient();\n\nRequest request = new Request.Builder()\n .url(\"https://api.gridx.de/systems/systemID\")\n .get()\n .addHeader(\"accept\", \"application/vnd.gridx.v2+json\")\n .build();\n\nResponse response = client.newCall(request).execute();" - lang: java label: Kotlin source: "val client = OkHttpClient()\n\nval request = Request.Builder()\n .url(\"https://api.gridx.de/systems/systemID\")\n .get()\n .addHeader(\"accept\", \"application/vnd.gridx.v2+json\")\n .build()\n\nval response = client.newCall(request).execute()" - lang: javascript label: Swift source: 'import Foundation let url = URL(string: "https://api.gridx.de/systems/systemID")! var request = URLRequest(url: url) request.httpMethod = "GET" request.timeoutInterval = 10 request.allHTTPHeaderFields = ["accept": "application/vnd.gridx.v2+json"] let (data, _) = try await URLSession.shared.data(for: request) print(String(decoding: data, as: UTF8.self))' - lang: csharp label: C# source: 'using RestSharp; var options = new RestClientOptions("https://api.gridx.de/systems/systemID"); var client = new RestClient(options); var request = new RestRequest(""); request.AddHeader("accept", "application/vnd.gridx.v2+json"); var response = await client.GetAsync(request); Console.WriteLine("{0}", response.Content); ' patch: operationId: updateSystem summary: Update a System description: 'Updates the specific system by setting the values of the body parameters. Any parameters not provided will be left unchanged.' tags: - System parameters: - name: systemID description: 'Unique identifier used to access a system. ' in: path required: true schema: type: string format: uuid example: aa3e5a93-bb38-4b15-b7f2-af40daf3a1dc requestBody: description: Modified System. required: true content: application/json: schema: allOf: - allOf: - title: System description: "A System represents the logical view of one gateway and its appliances.\n\nFor example, a household can be represented as a system with a gateway such as a \ngridBox, and its connected appliances.\n" properties: name: type: - string - 'null' maxLength: 200 description: Name of the System. example: gridX Headquarter solution: type: string description: "Represents the solution that the system uses:\n- HOME if the system is for a household. \n- CHARGE if the system is for charging station fleet management.\n" x-extensible-enum: - HOME - CHARGE - GENERAL - SMART_DISTRICT - MICROGRID - HOME_VIRTUAL_METERING - COMMERCIAL - CUSTOM_P2P x-readme-ref-name: SystemSolution priorities: description: Allows prioritisation of EMS functionalities by appliance type. Accepted values are ["BATTERY", "EV", "HEATPUMP", "HEATER"]. type: array items: type: string example: - EV - BATTERY appliancePriorities: type: array description: 'Allows prioritisation of EMS functionalities by appliance UUIDs. This option takes precendence over `priorities` field as it is more explicit. ' items: type: string format: uuid plan: description: "Charge plan of the system. Must be one of two possible options: \n * `2020_DLM_EVS_00` - Use this value for Dynamic Load Management.\n * `2020_SLM_EVS_00` - Use this value for Static Load Management.\n" type: string x-extensible-enum: - 2020_DLM_EVS_00 - 2020_SLM_EVS_00 x-readme-ref-name: SystemChargePlan operatingSince: type: string format: date-time description: Date since when the system is active in RFC3339 format. example: '2017-12-23T10:15:40Z' curtailmentStrategy: type: string deprecated: true description: "Deprecated: Only EQUALLY remains available and future implementations will likely use another field name.\nThe curtailment strategy describes how appliances shall be curtailed.\n * EQUALLY: Every appliance gets equally (fair) curtailed.\n" x-extensible-enum: - EQUALLY x-readme-ref-name: SystemCurtailmentStrategy location: title: Location description: Represents a GPS location with longitude and latitude. type: object allOf: - type: object properties: city: description: The city of the location. type: string example: Aachen country: description: The country of the location. type: string example: Germany addressLine1: description: 'First line of the location''s address, typically containing the main information such as the street name and house number. ' type: string example: Oppenhoffallee 143 addressLine2: description: 'Second line of the location''s address, typically containing additional information such as apartment numbers, suite numbers, or other details that can help in identifying the exact location of the address. ' type: string addressLine3: description: 'Third line of the location''s address, typically containing any other details that can help in identifying the exact location of the address. ' type: string addressLine4: description: 'Fourth line of the location''s address, typically containing any other details that can help in identifying the exact location of the address. ' type: string timeZone: description: The TZ Identifier of the location's timezone. type: string example: Europe/Berlin readOnly: true x-readme-ref-name: InventoryAbstractLocation - type: object properties: country: deprecated: true description: 'Deprecated - Instead of this freeform text field, use countryCode ' countryCode: type: string description: Country code in ISO 3166-1 alpha-2. example: DE enum: - AF - AX - AL - DZ - AS - AD - AO - AI - AQ - AG - AR - AM - AW - AU - AT - AZ - BS - BH - BD - BB - BY - BE - BZ - BJ - BM - BT - BO - BQ - BA - BW - BV - BR - IO - BN - BG - BF - BI - CV - KH - CM - CA - KY - CF - TD - CL - CN - CX - CC - CO - KM - CG - CD - CK - CR - CI - HR - CU - CW - CY - CZ - DK - DJ - DM - DO - EC - EG - SV - GQ - ER - EE - SZ - ET - FK - FO - FJ - FI - FR - GF - PF - TF - GA - GM - GE - DE - GH - GI - GR - GL - GD - GP - GU - GT - GG - GN - GW - GY - HT - HM - VA - HN - HK - HU - IS - IN - ID - IR - IQ - IE - IM - IL - IT - JM - JP - JE - JO - KZ - KE - KI - KP - KR - KW - KG - LA - LV - LB - LS - LR - LY - LI - LT - LU - MO - MG - MW - MY - MV - ML - MT - MH - MQ - MR - MU - YT - MX - FM - MD - MC - MN - ME - MS - MA - MZ - MM - NA - NR - NP - NL - NC - NZ - NI - NE - NG - NU - NF - MK - MP - 'NO' - OM - PK - PW - PS - PA - PG - PY - PE - PH - PN - PL - PT - PR - QA - RE - RO - RU - RW - BL - SH - KN - LC - MF - PM - VC - WS - SM - ST - SA - SN - RS - SC - SL - SG - SX - SK - SI - SB - SO - ZA - GS - SS - ES - LK - SD - SR - SJ - SE - CH - SY - TW - TJ - TZ - TH - TL - TG - TK - TO - TT - TN - TR - TM - TC - TV - UG - UA - AE - GB - US - UM - UY - UZ - VU - VE - VN - VG - VI - WF - EH - YE - ZM - ZW x-readme-ref-name: LocationCountryCode postalCode: description: The postal code of the location. type: string example: '52062' longitude: description: The geographic coordinate that specifies the east–west position of the location. type: number example: 6.09294299 readOnly: true latitude: description: The geographic coordinate that specifies the north–south position of the location. type: number example: 50.77441934 readOnly: true x-readme-ref-name: Location metadata: title: Metadata description: Represents system's metadata. type: object properties: wizard: title: Wizard type: object description: Represents the metadata to keep track of the current wizard step. required: - step properties: step: description: Represents the current wizard step. type: string x-extensible-enum: - WELCOME - STARTCODE - GRIDBOX_STATUS - SYSTEM_TYPE_SELECT - ACCOUNT_ASSIGNMENT - PERSONAL_INFORMATION - SYSTEM_OVERVIEW - SYSTEM_CHILDREN_SETUP - SYSTEM_SETUP - PARAGRAPH_14A - ENERGYMANAGEMENT - HEATING_ROD - ENERGYMANAGEMENT_ACTIVATION - ENERGY_SUPPLIER - SYSTEM_CHECK - DONE - ELECTRICITY_TARIFF_V2 - KOSTAL_CONFIGURATION - ENPHASE_CONNECTION - EEBUS_PAIRING - SONNEN_CONNECTION - IO_DEVICE_CONFIGURATION - IO_DEVICE_HEAT_PUMP_CONFIGURATION - TROUBLESHOOT_INSTALLATION - INSTALLER_HUB - ENA_G100 - PV_SYSTEM - FUSE_PROTECTION - ENERGY_OPTIMIZATION - UNKNOWN firstCompletedAt: description: Represents the date and time when the final wizard step was completed first time. type: string format: date-time readOnly: true example: '2025-06-22T00:00:00Z' version: description: Represents the version of wizard. type: integer x-extensible-enum: - 1 - 2 - 3 x-readme-ref-name: MetadataWizard energy: title: Energy Metadata type: object description: represents the metadata related to the energy use case. properties: installer: type: - string - 'null' description: Installer is the person who has installed the systems. norminalPower: type: - number - 'null' minimum: 0 description: 'The system''s maximal power production in W (for historical reasons the word "norminal" is used instead of the correct term "nominal power"). *Deprecated* - Use `nominalPower` instead (in mW!). ' deprecated: true nominalPower: type: - number - 'null' minimum: 0 description: The system's maximal power production in mW. 0 is used if unset. curtailment: type: - number - 'null' description: Curtailment is the percentage of system's nominal power at which the pv inverters should stop feeding into the grid. (0-1) heatingSystem: type: - string - 'null' description: HeatingSystem represents the type of the heating system. agreedEMSTerms: type: - boolean - 'null' deprecated: true description: 'AgreedEMSTerms indicates if the customers accepts the ems terms. *Deprecated* - Use `MetadataEMS.agreedEMSTerms` instead. ' ems: title: MetadataEMS type: object description: MetadataEMS represents the energy management allowances. properties: agreedEMSTerms: type: - boolean - 'null' description: AgreedEMSTerms indicates if the customers accepts the ems terms. enabledEMS: type: - boolean - 'null' description: EnabledEMS indicates if gridBox should activate the ems. agreedDynamicPVControlTerms: type: - boolean - 'null' description: AgreedDynamicPVControlTerms indicates if the customer accepts the dynamic pc control terms. enabledDynamicPVControl: type: - boolean - 'null' description: EnabledDynamicPVControl indicates if the gridBox should activate the dynamic pv control. enabledInverterGCPControl: type: - boolean - 'null' description: 'EnabledInverterGCPControl indicates if the gridBox should activate the inverter gcp control. *Deprecated* - This is automatically detected by the gridbox. If this field is unset or false, the gridbox will determine inverter GCP control activation automatically. ' deprecated: true agreedForecastBasedEMSTerms: type: - boolean - 'null' description: '*Deprecated* Feature is deprecated and will be removed in a future release. ' deprecated: true enabledForecastBasedEMS: type: - boolean - 'null' description: '*Deprecated* Feature is deprecated and will be removed in a future release. ' deprecated: true agreedPriorityConfigurationTerms: type: - boolean - 'null' description: AgreedPriorityConfigurationTerms indicates if the customer accepts the priority configuration terms. enabledPriorityConfiguration: type: - boolean - 'null' description: EnabledPriorityConfiguration indicates if the gridBox should activate the priority configuration. agreedPowerManagementTerms: type: - boolean - 'null' description: AgreedPowerManagementTerms indicates if the customer accepts the power management terms. enabledPowerManagement: type: - boolean - 'null' description: EnabledPowerManagement indicates if the gridBox should activate the power management. enabledStaticPowerManagement: type: - boolean - 'null' description: EnabledStaticPowerManagement indicates if the gridBox should activate the static power management. enabledPowerImportPeakOptimization: type: - boolean - 'null' description: EnabledPowerImportPeakOptimization indicates if the gridBox should activate the 15min avg. energy optimization algorithm. powerImportPeakPerOptimizationInterval: type: - number - 'null' format: double deprecated: true description: 'Describes the amount of imported energy in a 15 minutes interval in VA. Deprecated: Use powerImportPeakPerOptimizationIntervalmVA instead. ' powerImportPeakPerOptimizationIntervalmVA: type: - number - 'null' format: double description: Defines the average power in a 15 minute interval in mVA for peak shaving. enabledBatteryFullGridCharge: type: - boolean - 'null' description: '*Deprecated* Feature is deprecated and will be removed in a future release. The default behaviour is to always allow charging with full power and the setting is not required anymore. ' deprecated: true enabledLessConstrainingSOCLimits: type: - boolean - 'null' description: '*Deprecated* Feature is deprecated and will be removed in a future release. ' deprecated: true derAPISettings: title: DerAPISettings type: object description: DerAPISettings represents the metadata related to DER API configuration. properties: enabledCloudAPI: type: - boolean - 'null' description: EnabledCloudAPI enables assets control with cloud DER API. constraints: title: SyncEntitySettings type: object description: SyncEntitySettings configures entity synchronisation parameters. properties: syncInterval: type: - number - 'null' format: double description: SyncInterval defines the period in seconds for data to be synchronized between gridBox and cloud DER API. ttl: type: - number - 'null' format: double description: TTL defines the time to live in seconds for entity. disabled: type: boolean description: Disabled disables the sync of entities. x-readme-ref-name: SyncEntitySettings flexibilities: title: SyncEntitySettings type: object description: SyncEntitySettings configures entity synchronisation parameters. properties: syncInterval: type: - number - 'null' format: double description: SyncInterval defines the period in seconds for data to be synchronized between gridBox and cloud DER API. ttl: type: - number - 'null' format: double description: TTL defines the time to live in seconds for entity. disabled: type: boolean description: Disabled disables the sync of entities. x-readme-ref-name: SyncEntitySettings x-readme-ref-name: DerAPISettings enabledTimeOfUseOptimization: deprecated: true type: - boolean - 'null' description: 'Indicates if time of use optimization is enabled for the system. *Deprecated* - Use `systems/{systemID}/timeofuse/options` endpoint instead. ' disableAveragePmaxCalculation: type: - boolean - 'null' description: Disables the average pMax calculation. It means EMS will not calculate average pMax and will get the default value instead. excludeApplianceTypes: description: Appliance types to be ignored by the EMS. Updating this field to an empty array clears it. **Please note that this currently requires the box to be restarted to take effect**. type: - array - 'null' items: type: string x-extensible-enum: - HEAT_PUMP evChargingReallocationTolerance: description: Specifies the maximum power in mW that can be drawn to charge an EV in case the PV surplus is not sufficient. type: - number - 'null' format: double example: 500000 enabledPowerWindowHysteresis: description: Configures the system to use the power window hysteresis feature. If unset, the system will behave as if this was activated. Set to false to deactivate. type: - boolean - 'null' x-readme-ref-name: MetadataEMS smartMeterInstallationTimestamp: description: The time the smart meter has been installed (if any), in RFC3339 format. type: - string - 'null' format: date-time example: '2020-09-21T00:00:00Z' x-readme-ref-name: MetadataEnergy energySupplier: title: Energy Supplier type: object description: MetadataEnergySupplier represents the metadata related to energy supplier. properties: type: type: - string - 'null' deprecated: true description: Type determines if gridX is the energy supplier. The value is either "GRIDX" or "OTHER". enum: - GRIDX - OTHER unitPrice: type: - number - 'null' description: UnitPrice is unit price per kWh in EU cent. Deprecated - Use TariffV2 instead. deprecated: true installment: type: - number - 'null' description: Installment is the monthly payment. baseFee: type: - number - 'null' description: BaseFee is the monthly base fee. feedInTariff: type: - number - 'null' description: FeedInTariff is the cost-based compensation in EUR cent for feeding in. Deprecated - Use TariffV2 instead. deprecated: true expectedConsumption: type: - number - 'null' description: ExpectedConsumption is the expected annual consumption in kWh. x-readme-ref-name: MetadataEnergySupplier smartMeter: title: Smart Meter description: Represents the metadata to report if a smart meter has been installed. type: object properties: installed: type: - boolean - 'null' description: Reports if the smart meter has been installed. hasInstallationDate: type: - boolean - 'null' description: Reports if the provider has sent us a installation date that can be found in energy metadata. x-readme-ref-name: MetadataSmartMeter x-readme-ref-name: SystemMetadata x-readme-ref-name: AbstractSystem - type: object properties: productOption: type: object required: - id properties: id: type: string format: uuid location: title: Location description: "Represents a GPS location with longitude and latitude.\n\nYou can set a location either by providing an address (`addressLine1`, `city`,\n`postalCode`, `countryCode`, etc.) or by providing `latitude`/`longitude`\ndirectly, or both:\n * If `latitude`/`longitude` are provided, they are stored as given.\n * If only an address is provided, `latitude`/`longitude` are automatically\n derived from it via geocoding.\n * If both are provided, the given `latitude`/`longitude` are stored as-is\n and the address is **not** geocoded to overwrite them.\n\nNote that the reverse does not happen: providing only `latitude`/`longitude`\ndoes not populate the address fields, only `timeZone` is derived from the\ncoordinates.\n" type: object allOf: - type: object properties: city: description: The city of the location. type: string example: Aachen country: description: The country of the location. type: string example: Germany addressLine1: description: 'First line of the location''s address, typically containing the main information such as the street name and house number. ' type: string example: Oppenhoffallee 143 addressLine2: description: 'Second line of the location''s address, typically containing additional information such as apartment numbers, suite numbers, or other details that can help in identifying the exact location of the address. ' type: string addressLine3: description: 'Third line of the location''s address, typically containing any other details that can help in identifying the exact location of the address. ' type: string addressLine4: description: 'Fourth line of the location''s address, typically containing any other details that can help in identifying the exact location of the address. ' type: string timeZone: description: The TZ Identifier of the location's timezone. type: string example: Europe/Berlin readOnly: true x-readme-ref-name: InventoryAbstractLocation - type: object properties: country: deprecated: true description: 'Deprecated - Instead of this freeform text field, use countryCode ' countryCode: type: string description: Country code in ISO 3166-1 alpha-2. example: DE enum: - AF - AX - AL - DZ - AS - AD - AO - AI - AQ - AG - AR - AM - AW - AU - AT - AZ - BS - BH - BD - BB - BY - BE - BZ - BJ - BM - BT - BO - BQ - BA - BW - BV - BR - IO - BN - BG - BF - BI - CV - KH - CM - CA - KY - CF - TD - CL - CN - CX - CC - CO - KM - CG - CD - CK - CR - CI - HR - CU - CW - CY - CZ - DK - DJ - DM - DO - EC - EG - SV - GQ - ER - EE - SZ - ET - FK - FO - FJ - FI - FR - GF - PF - TF - GA - GM - GE - DE - GH - GI - GR - GL - GD - GP - GU - GT - GG - GN - GW - GY - HT - HM - VA - HN - HK - HU - IS - IN - ID - IR - IQ - IE - IM - IL - IT - JM - JP - JE - JO - KZ - KE - KI - KP - KR - KW - KG - LA - LV - LB - LS - LR - LY - LI - LT - LU - MO - MG - MW - MY - MV - ML - MT - MH - MQ - MR - MU - YT - MX - FM - MD - MC - MN - ME - MS - MA - MZ - MM - NA - NR - NP - NL - NC - NZ - NI - NE - NG - NU - NF - MK - MP - 'NO' - OM - PK - PW - PS - PA - PG - PY - PE - PH - PN - PL - PT - PR - QA - RE - RO - RU - RW - BL - SH - KN - LC - MF - PM - VC - WS - SM - ST - SA - SN - RS - SC - SL - SG - SX - SK - SI - SB - SO - ZA - GS - SS - ES - LK - SD - SR - SJ - SE - CH - SY - TW - TJ - TZ - TH - TL - TG - TK - TO - TT - TN - TR - TM - TC - TV - UG - UA - AE - GB - US - UM - UY - UZ - VU - VE - VN - VG - VI - WF - EH - YE - ZM - ZW x-readme-ref-name: LocationCountryCode postalCode: description: The postal code of the location. type: string example: '52062' longitude: description: 'The geographic coordinate that specifies the east–west position of the location. Can be set directly, or derived automatically from the address fields if omitted. ' type: number example: 6.09294299 latitude: description: 'The geographic coordinate that specifies the north–south position of the location. Can be set directly, or derived automatically from the address fields if omitted. ' type: number example: 50.77441934 x-readme-ref-name: WriteLocation x-readme-ref-name: SystemUpdate - additionalProperties: false x-readme-ref-name: SystemUpdateStrict examples: updateName: summary: Update system name value: name: gridX Headquarter updateLocationByAddress: description: 'Sets the system''s location using an address. Latitude/longitude and the time zone are derived automatically from the address via geocoding. ' summary: Update system location by address value: location: addressLine1: Oppenhoffallee 143 city: Aachen postalCode: '52062' countryCode: DE updateLocationByCoordinates: description: 'Sets the system''s location directly using latitude/longitude. The address fields are left unset; only the time zone is derived from the coordinates. ' summary: Update system location by coordinates value: location: latitude: 50.77441934 longitude: 6.09294299 enableDerApi: description: 'This example enables cloud DER API. This means that the gridBox will publish both constraints and flexibilities, which makes the objects available through the API. ' summary: Enable DER API value: metadata: energy: ems: derAPISettings: enabledCloudAPI: true enableDerApiWithoutFlexibilitiesSync: description: 'This example enables cloud DER API without flexibilities being synchronised with gridBox. This means that the gridBox won''t publish flexibilities and only considers the constraints published to the cloud. ' summary: Enable DER API, do not sync flexibilities value: metadata: energy: ems: derAPISettings: enabledCloudAPI: true flexibilities: disabled: true assignProductOption: description: 'Set product option for a single system ' summary: Assign a product option to the system value: productOption: id: d085f746-1ae3-4a89-ab3a-a5aa61fd4bf8 responses: '200': description: Returned system. content: application/vnd.gridx.v2+json: schema: title: System description: "A System represents the logical view of one gateway and its appliances.\n\nFor example, a household can be represented as a system with a gateway such as a \ngridBox, and its connected appliances.\n" allOf: - title: System description: "A System represents the logical view of one gateway and its appliances.\n \nFor example, a household can be represented as a system with a gateway such as a \ngridBox, and its connected appliances.\n" type: object allOf: - title: System description: "A System represents the logical view of one gateway and its appliances.\n\nFor example, a household can be represented as a system with a gateway such as a \ngridBox, and its connected appliances.\n" properties: name: type: - string - 'null' maxLength: 200 description: Name of the System. example: gridX Headquarter solution: type: string description: "Represents the solution that the system uses:\n- HOME if the system is for a household. \n- CHARGE if the system is for charging station fleet management.\n" x-extensible-enum: - HOME - CHARGE - GENERAL - SMART_DISTRICT - MICROGRID - HOME_VIRTUAL_METERING - COMMERCIAL - CUSTOM_P2P x-readme-ref-name: SystemSolution priorities: description: Allows prioritisation of EMS functionalities by appliance type. Accepted values are ["BATTERY", "EV", "HEATPUMP", "HEATER"]. type: array items: type: string example: - EV - BATTERY appliancePriorities: type: array description: 'Allows prioritisation of EMS functionalities by appliance UUIDs. This option takes precendence over `priorities` field as it is more explicit. ' items: type: string format: uuid plan: description: "Charge plan of the system. Must be one of two possible options: \n * `2020_DLM_EVS_00` - Use this value for Dynamic Load Management.\n * `2020_SLM_EVS_00` - Use this value for Static Load Management.\n" type: string x-extensible-enum: - 2020_DLM_EVS_00 - 2020_SLM_EVS_00 x-readme-ref-name: SystemChargePlan operatingSince: type: string format: date-time description: Date since when the system is active in RFC3339 format. example: '2017-12-23T10:15:40Z' curtailmentStrategy: type: string deprecated: true description: "Deprecated: Only EQUALLY remains available and future implementations will likely use another field name.\nThe curtailment strategy describes how appliances shall be curtailed.\n * EQUALLY: Every appliance gets equally (fair) curtailed.\n" x-extensible-enum: - EQUALLY x-readme-ref-name: SystemCurtailmentStrategy location: title: Location description: Represents a GPS location with longitude and latitude. type: object allOf: - type: object properties: city: description: The city of the location. type: string example: Aachen country: description: The country of the location. type: string example: Germany addressLine1: description: 'First line of the location''s address, typically containing the main information such as the street name and house number. ' type: string example: Oppenhoffallee 143 addressLine2: description: 'Second line of the location''s address, typically containing additional information such as apartment numbers, suite numbers, or other details that can help in identifying the exact location of the address. ' type: string addressLine3: description: 'Third line of the location''s address, typically containing any other details that can help in identifying the exact location of the address. ' type: string addressLine4: description: 'Fourth line of the location''s address, typically containing any other details that can help in identifying the exact location of the address. ' type: string timeZone: description: The TZ Identifier of the location's timezone. type: string example: Europe/Berlin readOnly: true x-readme-ref-name: InventoryAbstractLocation - type: object properties: country: deprecated: true description: 'Deprecated - Instead of this freeform text field, use countryCode ' countryCode: type: string description: Country code in ISO 3166-1 alpha-2. example: DE enum: - AF - AX - AL - DZ - AS - AD - AO - AI - AQ - AG - AR - AM - AW - AU - AT - AZ - BS - BH - BD - BB - BY - BE - BZ - BJ - BM - BT - BO - BQ - BA - BW - BV - BR - IO - BN - BG - BF - BI - CV - KH - CM - CA - KY - CF - TD - CL - CN - CX - CC - CO - KM - CG - CD - CK - CR - CI - HR - CU - CW - CY - CZ - DK - DJ - DM - DO - EC - EG - SV - GQ - ER - EE - SZ - ET - FK - FO - FJ - FI - FR - GF - PF - TF - GA - GM - GE - DE - GH - GI - GR - GL - GD - GP - GU - GT - GG - GN - GW - GY - HT - HM - VA - HN - HK - HU - IS - IN - ID - IR - IQ - IE - IM - IL - IT - JM - JP - JE - JO - KZ - KE - KI - KP - KR - KW - KG - LA - LV - LB - LS - LR - LY - LI - LT - LU - MO - MG - MW - MY - MV - ML - MT - MH - MQ - MR - MU - YT - MX - FM - MD - MC - MN - ME - MS - MA - MZ - MM - NA - NR - NP - NL - NC - NZ - NI - NE - NG - NU - NF - MK - MP - 'NO' - OM - PK - PW - PS - PA - PG - PY - PE - PH - PN - PL - PT - PR - QA - RE - RO - RU - RW - BL - SH - KN - LC - MF - PM - VC - WS - SM - ST - SA - SN - RS - SC - SL - SG - SX - SK - SI - SB - SO - ZA - GS - SS - ES - LK - SD - SR - SJ - SE - CH - SY - TW - TJ - TZ - TH - TL - TG - TK - TO - TT - TN - TR - TM - TC - TV - UG - UA - AE - GB - US - UM - UY - UZ - VU - VE - VN - VG - VI - WF - EH - YE - ZM - ZW x-readme-ref-name: LocationCountryCode postalCode: description: The postal code of the location. type: string example: '52062' longitude: description: The geographic coordinate that specifies the east–west position of the location. type: number example: 6.09294299 readOnly: true latitude: description: The geographic coordinate that specifies the north–south position of the location. type: number example: 50.77441934 readOnly: true x-readme-ref-name: Location metadata: title: Metadata description: Represents system's metadata. type: object properties: wizard: title: Wizard type: object description: Represents the metadata to keep track of the current wizard step. required: - step properties: step: description: Represents the current wizard step. type: string x-extensible-enum: - WELCOME - STARTCODE - GRIDBOX_STATUS - SYSTEM_TYPE_SELECT - ACCOUNT_ASSIGNMENT - PERSONAL_INFORMATION - SYSTEM_OVERVIEW - SYSTEM_CHILDREN_SETUP - SYSTEM_SETUP - PARAGRAPH_14A - ENERGYMANAGEMENT - HEATING_ROD - ENERGYMANAGEMENT_ACTIVATION - ENERGY_SUPPLIER - SYSTEM_CHECK - DONE - ELECTRICITY_TARIFF_V2 - KOSTAL_CONFIGURATION - ENPHASE_CONNECTION - EEBUS_PAIRING - SONNEN_CONNECTION - IO_DEVICE_CONFIGURATION - IO_DEVICE_HEAT_PUMP_CONFIGURATION - TROUBLESHOOT_INSTALLATION - INSTALLER_HUB - ENA_G100 - PV_SYSTEM - FUSE_PROTECTION - ENERGY_OPTIMIZATION - UNKNOWN firstCompletedAt: description: Represents the date and time when the final wizard step was completed first time. type: string format: date-time readOnly: true example: '2025-06-22T00:00:00Z' version: description: Represents the version of wizard. type: integer x-extensible-enum: - 1 - 2 - 3 x-readme-ref-name: MetadataWizard energy: title: Energy Metadata type: object description: represents the metadata related to the energy use case. properties: installer: type: - string - 'null' description: Installer is the person who has installed the systems. norminalPower: type: - number - 'null' minimum: 0 description: 'The system''s maximal power production in W (for historical reasons the word "norminal" is used instead of the correct term "nominal power"). *Deprecated* - Use `nominalPower` instead (in mW!). ' deprecated: true nominalPower: type: - number - 'null' minimum: 0 description: The system's maximal power production in mW. 0 is used if unset. curtailment: type: - number - 'null' description: Curtailment is the percentage of system's nominal power at which the pv inverters should stop feeding into the grid. (0-1) heatingSystem: type: - string - 'null' description: HeatingSystem represents the type of the heating system. agreedEMSTerms: type: - boolean - 'null' deprecated: true description: 'AgreedEMSTerms indicates if the customers accepts the ems terms. *Deprecated* - Use `MetadataEMS.agreedEMSTerms` instead. ' ems: title: MetadataEMS type: object description: MetadataEMS represents the energy management allowances. properties: agreedEMSTerms: type: - boolean - 'null' description: AgreedEMSTerms indicates if the customers accepts the ems terms. enabledEMS: type: - boolean - 'null' description: EnabledEMS indicates if gridBox should activate the ems. agreedDynamicPVControlTerms: type: - boolean - 'null' description: AgreedDynamicPVControlTerms indicates if the customer accepts the dynamic pc control terms. enabledDynamicPVControl: type: - boolean - 'null' description: EnabledDynamicPVControl indicates if the gridBox should activate the dynamic pv control. enabledInverterGCPControl: type: - boolean - 'null' description: 'EnabledInverterGCPControl indicates if the gridBox should activate the inverter gcp control. *Deprecated* - This is automatically detected by the gridbox. If this field is unset or false, the gridbox will determine inverter GCP control activation automatically. ' deprecated: true agreedForecastBasedEMSTerms: type: - boolean - 'null' description: '*Deprecated* Feature is deprecated and will be removed in a future release. ' deprecated: true enabledForecastBasedEMS: type: - boolean - 'null' description: '*Deprecated* Feature is deprecated and will be removed in a future release. ' deprecated: true agreedPriorityConfigurationTerms: type: - boolean - 'null' description: AgreedPriorityConfigurationTerms indicates if the customer accepts the priority configuration terms. enabledPriorityConfiguration: type: - boolean - 'null' description: EnabledPriorityConfiguration indicates if the gridBox should activate the priority configuration. agreedPowerManagementTerms: type: - boolean - 'null' description: AgreedPowerManagementTerms indicates if the customer accepts the power management terms. enabledPowerManagement: type: - boolean - 'null' description: EnabledPowerManagement indicates if the gridBox should activate the power management. enabledStaticPowerManagement: type: - boolean - 'null' description: EnabledStaticPowerManagement indicates if the gridBox should activate the static power management. enabledPowerImportPeakOptimization: type: - boolean - 'null' description: EnabledPowerImportPeakOptimization indicates if the gridBox should activate the 15min avg. energy optimization algorithm. powerImportPeakPerOptimizationInterval: type: - number - 'null' format: double deprecated: true description: 'Describes the amount of imported energy in a 15 minutes interval in VA. Deprecated: Use powerImportPeakPerOptimizationIntervalmVA instead. ' powerImportPeakPerOptimizationIntervalmVA: type: - number - 'null' format: double description: Defines the average power in a 15 minute interval in mVA for peak shaving. enabledBatteryFullGridCharge: type: - boolean - 'null' description: '*Deprecated* Feature is deprecated and will be removed in a future release. The default behaviour is to always allow charging with full power and the setting is not required anymore. ' deprecated: true enabledLessConstrainingSOCLimits: type: - boolean - 'null' description: '*Deprecated* Feature is deprecated and will be removed in a future release. ' deprecated: true derAPISettings: title: DerAPISettings type: object description: DerAPISettings represents the metadata related to DER API configuration. properties: enabledCloudAPI: type: - boolean - 'null' description: EnabledCloudAPI enables assets control with cloud DER API. constraints: title: SyncEntitySettings type: object description: SyncEntitySettings configures entity synchronisation parameters. properties: syncInterval: type: - number - 'null' format: double description: SyncInterval defines the period in seconds for data to be synchronized between gridBox and cloud DER API. ttl: type: - number - 'null' format: double description: TTL defines the time to live in seconds for entity. disabled: type: boolean description: Disabled disables the sync of entities. x-readme-ref-name: SyncEntitySettings flexibilities: title: SyncEntitySettings type: object description: SyncEntitySettings configures entity synchronisation parameters. properties: syncInterval: type: - number - 'null' format: double description: SyncInterval defines the period in seconds for data to be synchronized between gridBox and cloud DER API. ttl: type: - number - 'null' format: double description: TTL defines the time to live in seconds for entity. disabled: type: boolean description: Disabled disables the sync of entities. x-readme-ref-name: SyncEntitySettings x-readme-ref-name: DerAPISettings enabledTimeOfUseOptimization: deprecated: true type: - boolean - 'null' description: 'Indicates if time of use optimization is enabled for the system. *Deprecated* - Use `systems/{systemID}/timeofuse/options` endpoint instead. ' disableAveragePmaxCalculation: type: - boolean - 'null' description: Disables the average pMax calculation. It means EMS will not calculate average pMax and will get the default value instead. excludeApplianceTypes: description: Appliance types to be ignored by the EMS. Updating this field to an empty array clears it. **Please note that this currently requires the box to be restarted to take effect**. type: - array - 'null' items: type: string x-extensible-enum: - HEAT_PUMP evChargingReallocationTolerance: description: Specifies the maximum power in mW that can be drawn to charge an EV in case the PV surplus is not sufficient. type: - number - 'null' format: double example: 500000 enabledPowerWindowHysteresis: description: Configures the system to use the power window hysteresis feature. If unset, the system will behave as if this was activated. Set to false to deactivate. type: - boolean - 'null' x-readme-ref-name: MetadataEMS smartMeterInstallationTimestamp: description: The time the smart meter has been installed (if any), in RFC3339 format. type: - string - 'null' format: date-time example: '2020-09-21T00:00:00Z' x-readme-ref-name: MetadataEnergy energySupplier: title: Energy Supplier type: object description: MetadataEnergySupplier represents the metadata related to energy supplier. properties: type: type: - string - 'null' deprecated: true description: Type determines if gridX is the energy supplier. The value is either "GRIDX" or "OTHER". enum: - GRIDX - OTHER unitPrice: type: - number - 'null' description: UnitPrice is unit price per kWh in EU cent. Deprecated - Use TariffV2 instead. deprecated: true installment: type: - number - 'null' description: Installment is the monthly payment. baseFee: type: - number - 'null' description: BaseFee is the monthly base fee. feedInTariff: type: - number - 'null' description: FeedInTariff is the cost-based compensation in EUR cent for feeding in. Deprecated - Use TariffV2 instead. deprecated: true expectedConsumption: type: - number - 'null' description: ExpectedConsumption is the expected annual consumption in kWh. x-readme-ref-name: MetadataEnergySupplier smartMeter: title: Smart Meter description: Represents the metadata to report if a smart meter has been installed. type: object properties: installed: type: - boolean - 'null' description: Reports if the smart meter has been installed. hasInstallationDate: type: - boolean - 'null' description: Reports if the provider has sent us a installation date that can be found in energy metadata. x-readme-ref-name: MetadataSmartMeter x-readme-ref-name: SystemMetadata x-readme-ref-name: AbstractSystem - properties: id: type: string format: uuid readOnly: true description: Unique identifier of a system. example: aa3e5a93-bb38-4b15-b7f2-af40daf3a1dc createdAt: type: string format: date-time readOnly: true description: Date when the system was created in RFC3339 format. example: '2017-12-22T14:20:50Z' updatedAt: type: string format: date-time readOnly: true description: Date when the system was last updated in RFC3339 format. example: '2017-12-24T08:33:00Z' chargingIntervals: type: array readOnly: true description: Displays charging intervals of the system's EV charging stations. items: title: EV Charging Schedule type: object allOf: - title: EV Charging Schedule description: 'An Electric Vehicle charging schedule represents an interval in which the electric vehicle is supposed to charge at a defined limit. ' type: object properties: from: type: string format: date-time example: '2021-11-04T00:00:00Z' description: 'Specifies when the schedule should start in RFC3339 format. ' to: type: string format: date-time example: '2021-11-04T00:30:00Z' description: 'Specifies when the schedule should end in RFC3339 format. ' limit: description: 'The maximum amount of power in Watts that will be used for scheduling charging in the interval [from, to]. ' example: 75000 title: Positive Power in Watt. type: integer format: int64 minimum: 0 x-readme-ref-name: PositivePower x-readme-ref-name: AbstractEVChargingSchedule - properties: id: type: string format: uuid example: ec4d0c89-a604-49ac-82f0-427f9cb42204 readOnly: true updatedAt: type: string format: date-time readOnly: true description: Specifies when the schedule was updated the last time. - required: - id - from - to - limit x-readme-ref-name: EVChargingSchedule gateways: description: The gateways of which this system is comprised. type: array readOnly: true items: allOf: - title: Gateway description: 'A gateway used to monitor and control appliances. For instance, our beloved gridbox is a gateway. ' type: object properties: name: deprecated: true type: string maxLength: 255 description: Name of the gateway. debugModeUntil: deprecated: true type: string format: date-time description: 'Date until which debug messages are logged in RFC3339 format. **Deprecated**: defaults to `createdAt` + 3 days. ' x-readme-ref-name: AbstractGateway - properties: id: type: string format: uuid example: 6dd0a658-5828-4d30-bc65-a03c6d6e425f description: Unique identifier of a gateway. readOnly: true type: type: string description: 'Type of the gateway. **Deprecated** - Non-physical gateways will no longer be supported from 01.03.2024. This field will consequently be removed. ' deprecated: true enum: - VIRTUAL - PHYSICAL - OTHER x-readme-ref-name: GatewayType createdAt: type: string format: date-time readOnly: true description: Date when the Gateway was created in RFC3339 format. updatedAt: type: string format: date-time readOnly: true description: Date when the Gateway was last updated in RFC3339 format. registeredAt: deprecated: true type: string format: date-time readOnly: true description: 'Date when the Gateway was first registered in RFC3339 format. **Deprecated**: defaults to `createdAt`. ' connectionStatus: title: Connection Status type: object readOnly: true properties: status: type: string description: "Indicates the connection status. Is one of:\n * `AVAILABLE`: Gateway has sent data in the last 5 minutes\n * `TEMPORARILY_UNAVAILABLE`: Gateway has not sent data in the last 5 minutes\n * `UNAVAILABLE`: Gateway has not sent data in the last 24 hours\n * `UNKNOWN`: Gateway was never online and never sent data or the connection status can't be determined." enum: - AVAILABLE - TEMPORARILY_UNAVAILABLE - UNAVAILABLE - UNKNOWN contactedAt: type: string format: date-time deprecated: true description: 'When the gateway/appliance has last contacted the gridX cloud. In case the gateway was never online and never sent data, this field is null. Deprecated: Gateway heartbeats will be removed in future versions and this will be only estimated. Use `statusChangedAt` instead. ' statusChangedAt: type: string format: date-time description: 'When the gateway status last changed. In case the gateway was never online this field is null. ' required: - status x-readme-ref-name: ConnectionStatus vendorID: deprecated: true description: 'ID of the vendor account to which the corresponding system is assigned. **Deprecated**: omitted from responses by default. ' type: string format: uuid example: 6dd0a658-5828-4d30-bc65-a03c6d6e425f startcode: description: Code used to register a new gateway. type: string example: 39FDDF7D85BAAD2D manufacturer: deprecated: true description: 'Manufacturer of the gateway. **Deprecated**: defaults to `gridX`. ' type: string example: gridX readOnly: true model: description: Model of the gateway. type: string example: 2.00P-X readOnly: true serialnumber: description: Serial number of the gateway. type: string example: C083-200-000-000-199-P-X readOnly: true additionalIdentifiers: description: Additional identifiers used by the gateway. type: array items: title: Additional identifiers of the gridBox. description: Additional identifiers used by the gridBox. type: object properties: service: type: string readOnly: true description: The service this identifier is referring to, e.g the protocol used for the appliance-gridBox handshake example: EEBUS type: type: string readOnly: true description: The type of the identifier. example: SKI enum: - UNKNOWN - SKI identifier: type: string readOnly: true description: The actual identifier, e.g "SKI" used in the TLS certificate for the communication. If type is "SKI", it is hexadecimal-encoded. x-readme-ref-name: AdditionalIdentifier readOnly: true scanners: type: array readOnly: true description: List of scanner names that are enabled for this gateway. items: type: string description: The name of the scanner which searches for the appliance in the network. example: SMA_INVERTER_IGMP_HOST_DISCOVERY x-extensible-enum: - SMA_INVERTER_IGMP_HOST_DISCOVERY - SMA_INVERTER_ARP_HOST_DISCOVERY - SMA_METER - BCONTROL_METER - SOLAREDGE_INVERTER_METER_MODBUS_TCP - SOLAREDGE_INVERTER_METER_MODBUS_RTU - SOLARLOG_MONITOR - CUSTOMER_HOLFELDER_METER - CUSTOMER_HOLFELDER_INVERTER - E3DC_INVERTER_METER - KOSTAL_INVERTER - STUDER_INVERTER - FRONIUS_INVERTER - HUAWEI_INVERTER - KEBA_CHARGING_STATION - ECHARGE_CHARGING_STATION - INNOGY_CHARGING_STATION - ELECTRIS_METER - SOLARWATT_INVERTER_METER - ABL_CHARGING_STATION - SIEMENS_PAC_METER - JANITZA_METER - JANITZA_METER_RTU - EVTEC_CHARGING_STATION - HIKING_METER_RTU - EEBUS_FUEL_CELL_METER - KOSTAL_INVERTER_PLENTICORE - SONNENBATTERIE_UPNP - VIRTUAL_METER - MENNEKES_UPNP - ANYBUS_MBUS_CONVERTER_METER - EEBUS_GENERIC - SIMULATION_GENERIC - ALFEN_NG9XX_MODBUS_CHARGING_STATION - ALPITRONIC_HYPERCHARGER_MODBUS_CHARGING_STATION - MY_PV_AC_THOR_HEATER - COMPLEO_MODBUS_CHARGING_STATION - OCPP_CHARGING_STATION - BENDER_CHARGING_STATION - VOLTERION_REDOX_FLOW_BATTERY - XNET_METER - RSW_METER - SCHNEIDER_METER - INNOGY_MODBUS_CHARGING_STATION - MENNEKES_PREMIUM_MODBUS_CHARGING_STATION - PLPLANO_MODBUS_RTU_METER - HEIDELBERG_ENERGY_CONTROL_MODBUS_RTU_CHARGING_STATION - CARLO_GAVAZZI_MODBUS_RTU_METER - VESTEL_CHARGING_STATION - INNOTEC_HEAT_PUMP - WALLBE_MODBUS_CHARGING_STATION - EVBOX_MAX_CHARGING_STATION - ISKRAEMECO_METER - SUNGROW_MODBUS_INVERTER - WAGO_IO_DEVICE - GOE_CHARGING_STATION - XNET_CLOUD_HEAT_PUMP - XNET_CLOUD_GENERIC - LANDIS_GYR_METER - POWERDALE_CHARGING_STATION - EASTRON_SDM230_METER - EASTRON_SDM72DM_METER - ZUCCHETTI_CONNEXT_BOX - PLVARIO_ENERGY_METER_EM3 - ABB_OPC_UA_CHARGING_STATION - DATA_LOGGER_DEVICE - POWERSIDE_METER - PPC_METER - RUTENBECK_TCR_IP4_IO_DEVICE - JEAN_MUELLER_PL_MULTI_METER - ENPHASE_ENVOY_S_GATEWAY - SOLAX_MODBUS_RTU_INVERTER - ALPHA_ESS_HI10_HYBRID_INVERTER - ZUCCHETTI_MODBUS_RTU_INVERTER - STIEBEL_ELTRON_MODBUS_TCP_HEAT_PUMP - MENNEKES_AMTRON_COMPACT_2S_MODBUS_RTU_CHARGING_STATION - SAIA_PCD1_E_LINE_HEAT_PUMP - SUNGROW_SG_MODBUS_INVERTER - SOLAX_MODBUS_TCP_INVERTER - PHOENIX_CONTACT_EM_PRO_METER - DAIKIN_HOMEHUB_MODBUS_TCP_HEAT_PUMP - SOLPLANET_MODBUS_TCP_INVERTER - SUNGROW_SHXRS_SHXT_MODBUS_INVERTER - KOSTAD_DC_CHARGING_STATION - GIVENERGY_GIV_TCP_INVERTER - FOX_ESS_MODBUS_TCP_INVERTER - SHELLY_HTTP_METER - PIXII_MODBUS_TCP_BESS - GOODWE_MODBUS_TCP_INVERTER - READY_FOR_GRIDX - KOSTAL_ENECTOR_CHARGING_STATION - MENNEKES_4YOU_CHARGING_STATION - EKOENERGETYKA_CHARGING_STATION - VIESSMANN_EEBUS_INVERTER_AND_HEAT_PUMP - VAILLANT_EEBUS_HEAT_PUMP - PROLAN_EEBUS_STB - PPC_EEBUS_METER - THEBEN_SE_EEBUS_METER - DAIKIN_ALTHERMA4_MODBUS_TCP_HEAT_PUMP - FOXESS_CHARGING_STATION - BOSCH_BUDERUS_EEBUS_HEAT_PUMP - KOSTAL_EBOX_DC_B11_EEBUS_CHARGING_STATION - SOLPLANET_IBC_SOLAR_CHARGING_STATION - ADS_TEC_CHARGING_STATION - WOLF_EEBUS_HEAT_PUMP - SHELLY_3EMPRO_HTTP_METER - SHELLY_PRO2_HTTP_IO_DEVICE - SWISTEC_EEBUS_METER - BMW_DC_WALLBOX_EEBUS_CHARGING_STATION - SUNGROW_CHARGING_STATION - ETREL_INCH_DUO_CHARGING_STATION - ALPHAESS_SMILE_G3_T4_T10 - SUNGROW_EMS300CP_BESS - HUAWEI_SMART_LOGGER_BESS - SOLAX_MODBUS_TCP_METER x-readme-ref-name: ScannerName applianceComposition: type: array readOnly: true description: Appliance types that are connected to the gateway for overview purposes. example: - HEAT_PUMP items: type: string required: - id - type - connectionStatus - createdAt - updatedAt x-readme-ref-name: Gateway status: type: string readOnly: true deprecated: true enum: - UNDEFINED - OK - WARNING - ERROR description: "Status of the system: \n * `OK`: If the attached gateway is reported as ONLINE.\n * `WARNING`: If the attached gateway is reported as OFFLINE but less than 24h ago.\n * `ERROR`: If the attached gateway is reported as OFFLINE for more than 24h ago. \n * `UNDEFINED`: otherwise\n\n**Deprecated** - Use `gatewayStatus` instead.\n" gatewayStatus: type: string readOnly: true description: "Status of the system's gateway: \n * `AVAILABLE` - The gateway is reported as ONLINE.\n * `UNAVAILABLE` - The gateway is reported as OFFLINE.\n * `UNKNOWN` - The system has no gateway, or the gateway status is not known.\n\nIf you need more granularity, you can use the `connectionStatus` in `gateways` instead.\n" enum: - AVAILABLE - UNAVAILABLE - UNKNOWN assetsStatus: type: object readOnly: true description: 'Provides information about the system''s health, such as the computed combined status of all of its assets as well as their respective counts. Only included in the response if filtered by using the `filterBy` parameter, or included via the `include` parameter. ' properties: status: type: string description: 'The combined status of all of this system''s assets according to the following rules: AVAILABLE → All the assets are successfully connected in the last 5 minutes. UNHEALTHY → Only some assets are successfully connected in the last 5 minutes. UNAVAILABLE → No assets are successfully connected in the last 5 minutes. UNKNOWN → Fallback, e.g. system without assets or all assets have an unknown status. ' enum: - UNKNOWN - UNAVAILABLE - UNHEALTHY - AVAILABLE unknownCount: readOnly: true description: 'The total number of assets for which there is no status information. ' type: integer example: 321 unavailableCount: readOnly: true description: 'The total number of assets which have connected in the past but not in the past 5 minutes. ' type: integer example: 321 availableCount: readOnly: true description: 'The total number of assets which have connected in the past 5 minutes. ' type: integer example: 321 assetsKinds: type: array readOnly: true description: 'Provides information about the distinct kinds of assets attached to a system. Only included in the response if filtered by using the `filterBy` parameter, or included via the `include` parameter. ' items: type: string x-extensible-enum: - AIR_CONDITIONER - BATTERY - BTTP - CLUSTER - EV - EVSTATION - FUEL_CELL - GRID - HEAT_PUMP - HEAT_PUMP_EXTERNAL - HEATER - HEATING - HYBRID - IO_DEVICE - MISC - PV - PV_EXTERNAL - UNKNOWN - WIND_TURBINE assetsGatewayType: type: string readOnly: true description: 'Provides information about the gateway type of assets attached to a system. Returns HYBRID when both CLOUD and GRIDBOX assets are present. Omitted when the system has no assets. Only included in the response if filtered by using the `filterBy` parameter, or included via the `include` parameter. ' enum: - CLOUD - GRIDBOX - HYBRID tags: type: array readOnly: true description: 'Provides information about the distinct tags attached to a system. Only included in the response if filtered by using the `filterBy` parameter, or included via the `include` parameter. ' items: type: object properties: name: type: string value: type: string x-readme-ref-name: SystemWithoutProductOption - title: Embedded accounts description: 'Hierarchy of accounts the system belongs to, from the authenticated account down to the end customer''s. ' type: object properties: accounts: type: array items: title: Account description: 'An account describes an organizational unit to manage access to systems for one or multiple users. ' type: object readOnly: true allOf: - title: Account description: 'An account describes an organizational unit to manage access to systems for one or multiple users. This is the base type for the more concrete usages and not used directly within operations. ' type: object properties: name: type: string example: John Doe description: Name of the account, can be chosen freely but should be kept terse and descriptive. minLength: 1 maxLength: 256 email: type: string example: john@doe.com description: The email field of the account can optionally be chosen e.g. for contact purposes (in order to reach the responsible person for the account). maxLength: 256 solution: type: string description: 'Represents the supported solutions within the account: - HOME if the account contains household-like systems. - CHARGE if the account is used solely for charging station fleet management. - GENERAL if unsure what the account should contain or if it''s a mix of multiple solutions. - SMART_DISTRICT if the account is used solely for smart district management. If not set, the parent account''s solution will be assumed. ' enum: - HOME - CHARGE - GENERAL - SMART_DISTRICT - MICROGRID - HOME_VIRTUAL_METERING - COMMERCIAL - CUSTOM_P2P x-readme-ref-name: InventoryAccountSolution x-readme-ref-name: InventoryAbstractAccount - properties: id: type: string format: uuid example: 49a4f165-8233-426b-a1a4-e569665a25dd description: Uniquely identifies the account. parentID: type: string format: uuid example: 19a4f165-8233-426b-a1a4-e569665a25dd description: Parent of the account for a tree-like account structure. Only the root account does not have a parent ID. createdAt: type: string format: date-time description: Specifies when the account was created. updatedAt: type: string format: date-time description: Specifies when the account was updated. systemsCount: type: integer description: SystemCount is the number of systems assigned to this account example: 1 kind: type: string readOnly: true enum: - b2b - end-user description: If b2b, the account is a regular account. If end-user, the account is a customer account which contains just one user. x-readme-ref-name: AccountKind mainAddress: title: Address description: Represents a physical address of a customer. allOf: - type: object properties: city: description: The city of the location. type: string example: Aachen country: description: The country of the location. type: string example: Germany addressLine1: description: 'First line of the location''s address, typically containing the main information such as the street name and house number. ' type: string example: Oppenhoffallee 143 addressLine2: description: 'Second line of the location''s address, typically containing additional information such as apartment numbers, suite numbers, or other details that can help in identifying the exact location of the address. ' type: string addressLine3: description: 'Third line of the location''s address, typically containing any other details that can help in identifying the exact location of the address. ' type: string addressLine4: description: 'Fourth line of the location''s address, typically containing any other details that can help in identifying the exact location of the address. ' type: string timeZone: description: The TZ Identifier of the location's timezone. type: string example: Europe/Berlin readOnly: true x-readme-ref-name: InventoryAbstractLocation - type: object properties: postalcode: description: The postal code of the location. type: string example: '52062' region: description: The region of the address. type: string telephone: description: The telephone number of the customer. type: string x-readme-ref-name: InventoryAddress customization: description: Customization can be used to store arbitrary data. required: - id - createdAt - updatedAt x-readme-ref-name: InventoryAccount readOnly: true x-readme-ref-name: EmbeddedAccounts - properties: productOption: type: object allOf: - title: Product Option description: 'A product option describes a set of features whose access should be restricted from or granted to users of a system. Systems can be assigned a product option to manage their access to these features. This is the base type for the more concrete usages and not used directly within operations. ' type: object properties: name: type: string description: Name of the product option. example: Default Product Option description: type: string description: Describes the purpose of the product option. x-readme-ref-name: AbstractProductOption - properties: id: description: Unique identifier of the product option. type: string format: uuid example: d5166f02-8b56-4200-90bd-35d3d17391b4 accountID: description: Unique identifier of the account that owns the product option. type: string format: uuid example: d73b6749-2c32-4bca-ab73-50d8e3744edf isDefault: type: boolean description: Indicates whether the product option should be assigned by default to all systems of the owning account. functionalities: description: The default functionalities that a product option restricts access to. Deprecated - Use `showFunctionalities` and `hideFunctionalities` instead. type: array readOnly: true deprecated: true items: type: object allOf: - description: 'A product functionality describes a feature. It is used to manage access to this feature via product options. This is the base type for the more concrete usages and not used directly within operations. ' type: object properties: name: type: string maxLength: 256 description: Name of the product functionality. example: EV Manager hide: type: boolean description: Indicates whether the product functionality should be hidden or shown. description: type: string description: Describes the purpose of the product functionality. x-readme-ref-name: AbstractProductFunctionality - properties: id: description: Unique identifier of the product functionality. type: string format: uuid example: 4e3392ce-ed94-4946-8a11-665e0443723e required: - id - name - hide x-readme-ref-name: ProductFunctionality hideFunctionalities: readOnly: true description: The default functionalities that a product option restricts access to. Must be of type `hide=true`. type: array items: type: object allOf: - description: 'A product functionality describes a feature. It is used to manage access to this feature via product options. This is the base type for the more concrete usages and not used directly within operations. ' type: object properties: name: type: string maxLength: 256 description: Name of the product functionality. example: EV Manager hide: type: boolean description: Indicates whether the product functionality should be hidden or shown. description: type: string description: Describes the purpose of the product functionality. x-readme-ref-name: AbstractProductFunctionality - properties: id: description: Unique identifier of the product functionality. type: string format: uuid example: 4e3392ce-ed94-4946-8a11-665e0443723e required: - id - name - hide x-readme-ref-name: ProductFunctionality showFunctionalities: readOnly: true description: The extra functionalities that a product option grants access to. Must be of type `hide=false`. type: array items: type: object allOf: - description: 'A product functionality describes a feature. It is used to manage access to this feature via product options. This is the base type for the more concrete usages and not used directly within operations. ' type: object properties: name: type: string maxLength: 256 description: Name of the product functionality. example: EV Manager hide: type: boolean description: Indicates whether the product functionality should be hidden or shown. description: type: string description: Describes the purpose of the product functionality. x-readme-ref-name: AbstractProductFunctionality - properties: id: description: Unique identifier of the product functionality. type: string format: uuid example: 4e3392ce-ed94-4946-8a11-665e0443723e required: - id - name - hide x-readme-ref-name: ProductFunctionality required: - id - accountID - name - isDefault - functionalities - hideFunctionalities - showFunctionalities x-readme-ref-name: ProductOption productOptionUpdatedAt: description: Time at which the system's product option was last changed in RFC3339 format. type: string format: date-time readOnly: true example: '2009-11-10T23:20:50Z' required: - id - name - createdAt - updatedAt x-readme-ref-name: System '403': description: Forbidden. content: application/vnd.gridx.v2+json: schema: readOnly: true allOf: - title: General Exception description: Represents a general error structure returned by our REST API. type: object properties: message: type: string description: Message represents the message reported to the user. details: type: array description: 'Details represents detail information for the user to fix this problem ' items: type: string required: - message x-readme-ref-name: GeneralException - title: UnauthorizedError - Forbidden Error description: Forbidden Error example: message: Bad credentials x-readme-ref-name: ForbiddenException '404': description: System not found content: application/vnd.gridx.v2+json: schema: readOnly: true allOf: - title: General Exception description: Represents a general error structure returned by our REST API. type: object properties: message: type: string description: Message represents the message reported to the user. details: type: array description: 'Details represents detail information for the user to fix this problem ' items: type: string required: - message x-readme-ref-name: GeneralException - title: ClientError - Not Found description: Not Found indicates that the entity was not found. example: message: Not Found x-readme-ref-name: NotFoundException '422': description: Validation failed. content: application/vnd.gridx.v2+json: schema: readOnly: true allOf: - title: General Exception description: Represents a general error structure returned by our REST API. type: object properties: message: type: string description: Message represents the message reported to the user. details: type: array description: 'Details represents detail information for the user to fix this problem ' items: type: string required: - message x-readme-ref-name: GeneralException - title: ClientError - Validation description: 'Validation indicates that the request body contains fields which does not pass the validation. ' type: object required: - message - details example: message: Validation failed details: - email is not valid x-readme-ref-name: InvalidException '500': description: There has been an internal error on our side. We're looking into it. content: application/vnd.gridx.v2+json: schema: readOnly: true allOf: - title: General Exception description: Represents a general error structure returned by our REST API. type: object properties: message: type: string description: Message represents the message reported to the user. details: type: array description: 'Details represents detail information for the user to fix this problem ' items: type: string required: - message x-readme-ref-name: GeneralException - title: ServerSideError - Internal Server Error description: Internal Server Error example: message: Internal Server Error x-readme-ref-name: InternalException security: - HeaderAuth: - SystemsWrite x-code-samples: - lang: python label: Python source: "import requests\n\nurl = \"https://api.gridx.de/systems/systemID\"\n\npayload = { \"name\": \"gridX Headquarter\" }\nheaders = {\n \"accept\": \"application/vnd.gridx.v2+json\",\n \"content-type\": \"application/json\"\n}\n\nresponse = requests.patch(url, json=payload, headers=headers)\n\nprint(response.text)" - lang: shell label: Shell source: "curl --request PATCH \\\n --url https://api.gridx.de/systems/systemID \\\n --header 'accept: application/vnd.gridx.v2+json' \\\n --header 'content-type: application/json' \\\n --data '\n{\n \"name\": \"gridX Headquarter\"\n}\n'" - lang: go label: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"net/http\"\n\t\"io\"\n)\n\nfunc main() {\n\n\turl := \"https://api.gridx.de/systems/systemID\"\n\n\tpayload := strings.NewReader(\"{\\\"name\\\":\\\"gridX Headquarter\\\"}\")\n\n\treq, _ := http.NewRequest(\"PATCH\", url, payload)\n\n\treq.Header.Add(\"accept\", \"application/vnd.gridx.v2+json\")\n\treq.Header.Add(\"content-type\", \"application/json\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := io.ReadAll(res.Body)\n\n\tfmt.Println(string(body))\n\n}" - lang: javascript label: Javascript source: "const options = {\n method: 'PATCH',\n headers: {accept: 'application/vnd.gridx.v2+json', 'content-type': 'application/json'},\n body: JSON.stringify({name: 'gridX Headquarter'})\n};\n\nfetch('https://api.gridx.de/systems/systemID', options)\n .then(res => res.json())\n .then(res => console.log(res))\n .catch(err => console.error(err));" - lang: java label: Java source: "OkHttpClient client = new OkHttpClient();\n\nMediaType mediaType = MediaType.parse(\"application/json\");\nRequestBody body = RequestBody.create(mediaType, \"{\\\"name\\\":\\\"gridX Headquarter\\\"}\");\nRequest request = new Request.Builder()\n .url(\"https://api.gridx.de/systems/systemID\")\n .patch(body)\n .addHeader(\"accept\", \"application/vnd.gridx.v2+json\")\n .addHeader(\"content-type\", \"application/json\")\n .build();\n\nResponse response = client.newCall(request).execute();" - lang: java label: Kotlin source: "val client = OkHttpClient()\n\nval mediaType = MediaType.parse(\"application/json\")\nval body = RequestBody.create(mediaType, \"{\\\"name\\\":\\\"gridX Headquarter\\\"}\")\nval request = Request.Builder()\n .url(\"https://api.gridx.de/systems/systemID\")\n .patch(body)\n .addHeader(\"accept\", \"application/vnd.gridx.v2+json\")\n .addHeader(\"content-type\", \"application/json\")\n .build()\n\nval response = client.newCall(request).execute()" - lang: javascript label: Swift source: "import Foundation\n\nlet parameters = [\"name\": \"gridX Headquarter\"] as [String : Any?]\n\nlet postData = try JSONSerialization.data(withJSONObject: parameters, options: [])\n\nlet url = URL(string: \"https://api.gridx.de/systems/systemID\")!\nvar request = URLRequest(url: url)\nrequest.httpMethod = \"PATCH\"\nrequest.timeoutInterval = 10\nrequest.allHTTPHeaderFields = [\n \"accept\": \"application/vnd.gridx.v2+json\",\n \"content-type\": \"application/json\"\n]\nrequest.httpBody = postData\n\nlet (data, _) = try await URLSession.shared.data(for: request)\nprint(String(decoding: data, as: UTF8.self))" - lang: csharp label: C# source: 'using RestSharp; var options = new RestClientOptions("https://api.gridx.de/systems/systemID"); var client = new RestClient(options); var request = new RestRequest(""); request.AddHeader("accept", "application/vnd.gridx.v2+json"); request.AddJsonBody("{\"name\":\"gridX Headquarter\"}", false); var response = await client.PatchAsync(request); Console.WriteLine("{0}", response.Content); ' delete: operationId: deleteSystem summary: Delete a System description: 'Deletes a system. **Important**: The system must not have any attached Gateway. Reset any attached Gateway first by creating a *reset job*.' tags: - System parameters: - name: systemID description: 'Unique identifier used to access a system. ' in: path required: true schema: type: string format: uuid example: aa3e5a93-bb38-4b15-b7f2-af40daf3a1dc responses: '204': description: System has been deleted successfully. '403': description: Forbidden. content: application/vnd.gridx.v2+json: schema: readOnly: true allOf: - title: General Exception description: Represents a general error structure returned by our REST API. type: object properties: message: type: string description: Message represents the message reported to the user. details: type: array description: 'Details represents detail information for the user to fix this problem ' items: type: string required: - message x-readme-ref-name: GeneralException - title: UnauthorizedError - Forbidden Error description: Forbidden Error example: message: Bad credentials x-readme-ref-name: ForbiddenException '404': description: Gateway not found content: application/vnd.gridx.v2+json: schema: readOnly: true allOf: - title: General Exception description: Represents a general error structure returned by our REST API. type: object properties: message: type: string description: Message represents the message reported to the user. details: type: array description: 'Details represents detail information for the user to fix this problem ' items: type: string required: - message x-readme-ref-name: GeneralException - title: ClientError - Not Found description: Not Found indicates that the entity was not found. example: message: Not Found x-readme-ref-name: NotFoundException '500': description: There has been an internal error on our side. We're looking into it. content: application/vnd.gridx.v2+json: schema: readOnly: true allOf: - title: General Exception description: Represents a general error structure returned by our REST API. type: object properties: message: type: string description: Message represents the message reported to the user. details: type: array description: 'Details represents detail information for the user to fix this problem ' items: type: string required: - message x-readme-ref-name: GeneralException - title: ServerSideError - Internal Server Error description: Internal Server Error example: message: Internal Server Error x-readme-ref-name: InternalException security: - HeaderAuth: - SystemsWrite x-code-samples: - lang: python label: Python source: 'import requests url = "https://api.gridx.de/systems/systemID" headers = {"accept": "application/vnd.gridx.v2+json"} response = requests.delete(url, headers=headers) print(response.text)' - lang: shell label: Shell source: "curl --request DELETE \\\n --url https://api.gridx.de/systems/systemID \\\n --header 'accept: application/vnd.gridx.v2+json'" - lang: go label: Go source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io\"\n)\n\nfunc main() {\n\n\turl := \"https://api.gridx.de/systems/systemID\"\n\n\treq, _ := http.NewRequest(\"DELETE\", url, nil)\n\n\treq.Header.Add(\"accept\", \"application/vnd.gridx.v2+json\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := io.ReadAll(res.Body)\n\n\tfmt.Println(string(body))\n\n}" - lang: javascript label: Javascript source: "const options = {method: 'DELETE', headers: {accept: 'application/vnd.gridx.v2+json'}};\n\nfetch('https://api.gridx.de/systems/systemID', options)\n .then(res => res.json())\n .then(res => console.log(res))\n .catch(err => console.error(err));" - lang: java label: Java source: "OkHttpClient client = new OkHttpClient();\n\nRequest request = new Request.Builder()\n .url(\"https://api.gridx.de/systems/systemID\")\n .delete(null)\n .addHeader(\"accept\", \"application/vnd.gridx.v2+json\")\n .build();\n\nResponse response = client.newCall(request).execute();" - lang: java label: Kotlin source: "val client = OkHttpClient()\n\nval request = Request.Builder()\n .url(\"https://api.gridx.de/systems/systemID\")\n .delete(null)\n .addHeader(\"accept\", \"application/vnd.gridx.v2+json\")\n .build()\n\nval response = client.newCall(request).execute()" - lang: javascript label: Swift source: 'import Foundation let url = URL(string: "https://api.gridx.de/systems/systemID")! var request = URLRequest(url: url) request.httpMethod = "DELETE" request.timeoutInterval = 10 request.allHTTPHeaderFields = ["accept": "application/vnd.gridx.v2+json"] let (data, _) = try await URLSession.shared.data(for: request) print(String(decoding: data, as: UTF8.self))' - lang: csharp label: C# source: 'using RestSharp; var options = new RestClientOptions("https://api.gridx.de/systems/systemID"); var client = new RestClient(options); var request = new RestRequest(""); request.AddHeader("accept", "application/vnd.gridx.v2+json"); var response = await client.DeleteAsync(request); Console.WriteLine("{0}", response.Content); ' servers: - url: https://api.gridx.de description: Production components: securitySchemes: HeaderAuth: type: apiKey name: Authorization in: header description: Enter either the JWT token with the prefix `Bearer ` or an API token with the prefix `Token ` x-refined-from: - gridx-api.json - gridx-ai-openapi.yml