Skip to main content

PaginatedResponse[Site]

data object[]required
  • Array [
  • _idId (string)
    Example: 5eb7cf5a86d9755df3a6c593
    partner_idPartner Id (string)required

    Possible values: Value must match regular expression ^[a-zA-Z0-9_-]{1,64}$

    site_idSite Id (string)required

    Possible values: Value must match regular expression ^[a-zA-Z0-9_-]{1,64}$

    nameName (string)required
    location objectrequired
    nameName (string)required
    coordinatesarrayrequired

    Possible values: >= 3, <= 3

    countryCountry (string)required
    statusSiteOperatingStatus (string)

    Inactive sites run nothing, shadow sites run forecasting and optimization without sending schedules to the controller, active sites run everything.

    Possible values: [inactive, active, shadow]

    Default value: inactive
    validation_status object
    anyOf
    statusValidationStatusEnum (string)

    Possible values: [ERROR, WARNING, OK, UNKNOWN]

    Default value: UNKNOWN
    site_configuration_status object
    statusValidationStatusEnum (string)

    Possible values: [ERROR, WARNING, OK, UNKNOWN]

    Default value: UNKNOWN
    configuration_added object
    statusValidationStatusEnum (string)

    Possible values: [ERROR, WARNING, OK, UNKNOWN]

    Default value: UNKNOWN
    configuration_complete object
    statusValidationStatusEnum (string)

    Possible values: [ERROR, WARNING, OK, UNKNOWN]

    Default value: UNKNOWN
    missing_assetsstring[]
    Default value: []
    valid_for_optimization object
    statusValidationStatusEnum (string)

    Possible values: [ERROR, WARNING, OK, UNKNOWN]

    Default value: UNKNOWN
    validation_errors object
    anyOf
    string
    optimization_configuration_status object
    statusValidationStatusEnum (string)

    Possible values: [ERROR, WARNING, OK, UNKNOWN]

    Default value: UNKNOWN
    ingress_status object
    statusValidationStatusEnum (string)

    Possible values: [ERROR, WARNING, OK, UNKNOWN]

    Default value: UNKNOWN
    receiving_measurement_data object
    statusValidationStatusEnum (string)

    Possible values: [ERROR, WARNING, OK, UNKNOWN]

    Default value: UNKNOWN
    not_receiving_data_fromstring[]
    Default value: []
    all_assetsAll Assets (boolean)
    Default value: false
    last_validationstring<date-time>
    configurations object
    anyOf
    site_configuration object
    anyOf
    device_list object[]required
  • Array [
  • oneOf
    nameName (string)required

    The name of the device itself. This value will be used as the asset ID in the rest of the API.

    collectorCollector (string)required

    The name of the collector to which this device is connected.

    ingress_validation object

    Overrides the site-level ingress validation config for this asset. When set, controls how often measurements are expected during active and inactive transactions. When null, the site-level configuration is used.

    anyOf
    with_transaction_expected_measurement_intervalWith Transaction Expected Measurement Interval (number)

    Expected measurement interval for the asset while it has an active transaction. Measurements arriving less frequently than this are flagged as stale by ingress validation. Note: the UCL calculation requires measurements at least every 5 minutes to produce accurate results, so this value should not exceed 5 minutes for assets that participate in the uncontrollable-load computation.

    without_transaction_expected_measurement_interval object

    Expected measurement interval for the asset when no transaction is active. When null, the asset is always considered valid while idle. Note: the UCL calculation requires measurements at least every 5 minutes to produce accurate results, so if this asset contributes to the uncontrollable-load computation it should still report at least every 5 minutes.

    anyOf
    number
    typeType (string)
    Constant value: charging_pole_3phase
    Default value: charging_pole_3phase
    line_currentLine Current (integer)required

    The line current in Ampere.

    pin_to_phase_mapping objectrequired

    Defines how charging pole pins map to the collectors' phases. For more information see the 'Key Concepts - Site configuration' section in the documentation.

    pin_liststring[]required

    Possible values: [pin1, pin2, pin3]

    phase_liststring[]required

    Possible values: [L1, L2, L3]

  • ]
  • collector_list object[]required

    The site's root collector, its grid connection. A site has exactly one; collectors below the grid connection belong in its children.

    Possible values: <= 1

  • Array [
  • phase_permutations object

    Specify the phase mapping between this asset (child) and its parent collector (parent). Leave unset when the wiring is unknown; phase-aware control (use_topology) requires every asset's mapping to be declared, so a single unset mapping makes the controller fall back to the worst case. The root collector is exempt: it is the grid connection, whose phases are the reference frame every other mapping is expressed against, so the controller always treats it as the identity and it may only be left unset or declared as the identity.

    anyOf
    parentstring[]required

    Possible values: [L1, L2, L3]

    childstring[]required

    Possible values: [L1, L2, L3]

    nameName (string)required
    children object

    The children of this collector. This is used to create a tree structure.

    anyOf
  • Array [
  • 0
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
  • ]
  • line_currentLine Current (integer)required

    The line current in Ampere.

    safe_line_current object

    An optional, safer line current in Ampere used by the optimizer instead of line_current when set.

    anyOf
    integer
    min_phase_current object

    An optional lower bound in Ampere per phase. Set it to 0 on the main collector to forbid injection into the grid.

    anyOf
    number
    phase_voltagePhase Voltage (integer)required

    The phase voltage is in Volt.

    commodityCommodity (string)
    Default value: electricity
    1P_3PCollectorType (string)

    Specifies whether the collector is single-phase (1P) or three-phase (3P).

    Possible values: [1P, 3P]

    Default value: 3P
    nb_of_phasesNb Of Phases (integer)required
  • ]
  • io_configuration object
    anyOf
    asset_io_config object[]required
  • Array [
  • asset_idAsset Id (string)required
    config objectrequired
    type

    Possible values: [modbus-tcp, ocpp, p1-meter, virtual]

    ipstring<ipvanyaddress>required
    portPort (integer)required

    Possible values: >= 0 and <= 65535

    registers objectrequired
    type

    Possible values: [abb-cms, abb-emax2, alfen, alpitronix-hypercharger, autel, charx, huawei-smart-logger, janitza-umg604pro, pluon-dc, pqube-3, shelly-3em, siemens-pac2200, socomec-countis, sungrow-ems300cp, sungrow-idc480e-c, unsupported]

    object
    brand object

    Optional hardware brand of the physical device (e.g. 'Alfen'). Descriptive metadata for the dashboard; not used by the optimizer.

    anyOf
    string
    model object

    Optional hardware model of the physical device (e.g. 'Eve Single Pro-line'). Descriptive metadata for the dashboard; not used by the optimizer.

    anyOf
    string
  • ]
  • controller_modeController Mode (string)

    Possible values: [read_only, active]

    Default value: read_only
    phase_permutation_modePhase Permutation Mode (string)

    Possible values: [worst_case, use_topology]

    Default value: worst_case
    optimization_configuration object
    anyOf
    peak_minimization object
    anyOf
    active object

    Boolean field that indicates if the peak minimization is activated or not.

    anyOf
    boolean
    peak_limit object

    Specifies a line under which the peak price does not apply. The value specified will be applied to all the phases of the collector separately. By default the peak_limit is set to 0.

    anyOf
    integer
    negative_peak_minimization object
    anyOf
    active object

    Boolean field that indicates if the peak minimization is activated or not.

    anyOf
    boolean
    peak_limit object

    Specifies a line under which the peak price does not apply. The value specified will be applied to all the phases of the collector separately. By default the peak_limit is set to 0.

    anyOf
    integer
    cost_minimization_activeCost Minimization Active (boolean)

    Boolean field that indicates if cost minimization (energy price optimization) is activated or not.

    Default value: true
    planning_frequencyPlanning Frequency (string)

    The planned frequency at which a site will be optimized. Should follow the python timedelta notation. Currently this field is disabled as we only support 15 minutes long optimization configuration. Notation is in Pandas Timedelta notation.

    Constant value: PT15M
    Default value: PT15M
    planning_horizonPlanning Horizon (string)

    The planning horizon for which the optimization will be done. Should follow the ISO-8601 duration notation.

    Possible values: [PT2H, PT4H, PT6H, PT8H, PT10H, PT12H, PT15H, PT18H, P1D, P2D, P3D]

    Default value: P1D
    contract object
    anyOf
    contract_type

    Possible values: [day_night_be, dynamic, fixed]

    day_offtake_cost_per_mwhDay Offtake Cost Per Mwh (number)required
    night_offtake_cost_per_mwhNight Offtake Cost Per Mwh (number)required
    day_injection_cost_per_mwhDay Injection Cost Per Mwh (number)required
    night_injection_cost_per_mwhNight Injection Cost Per Mwh (number)required
    revenue object
    anyOf
    revenue_per_kwh_ac_charged object

    Revenue per kWh charged by AC chargers in EUR.

    anyOf
    number
    revenue_per_kwh_dc_charged object

    Revenue per kWh charged by DC chargers in EUR.

    anyOf
    number
    dso object
    anyOf
    dsorequired

    Possible values: [AIEG, AIESH, Fluvius, German, ORES, RESA, REW, Sibelga]

    regionRegion (string)required
    Constant value: All
    connection_typeConnection Type (string)required

    Possible values: [T-MT avec terme capacitaire, T-MT sans terme capacitaire, MT avec terme capacitaire, MT sans terme capacitaire, T-BT avec terme capacitaire, T-BT sans terme capacitaire, BT>56kVA - heures normales, BT>56kVA - heures pleines/creuses, BT - heures normales, BT - heures pleines/creuses, BT - heures incitative]

    ingress_validation object
    main_collector_expected_measurement_interval object

    Expected measurement interval applied to every collector on the site. When null, collectors are always considered valid. Note: the UCL calculation requires grid measurements at least every 5 minutes to produce accurate results, so the main collector should not exceed a 5-minute interval.

    anyOf
    number
    asset object

    Default ingress validation for assets. Used when an asset has no ingress_validation override and no per_asset_type entry matches.

    with_transaction_expected_measurement_intervalWith Transaction Expected Measurement Interval (number)

    Expected measurement interval for the asset while it has an active transaction. Measurements arriving less frequently than this are flagged as stale by ingress validation. Note: the UCL calculation requires measurements at least every 5 minutes to produce accurate results, so this value should not exceed 5 minutes for assets that participate in the uncontrollable-load computation.

    without_transaction_expected_measurement_interval object

    Expected measurement interval for the asset when no transaction is active. When null, the asset is always considered valid while idle. Note: the UCL calculation requires measurements at least every 5 minutes to produce accurate results, so if this asset contributes to the uncontrollable-load computation it should still report at least every 5 minutes.

    anyOf
    number
    per_asset_type object

    Per-asset-type defaults that override the site-level asset defaults. An asset without its own ingress_validation falls back to the per-type config (if present) before falling back to asset.

    property name* AssetIngressValidationConfig
    with_transaction_expected_measurement_intervalWith Transaction Expected Measurement Interval (number)

    Expected measurement interval for the asset while it has an active transaction. Measurements arriving less frequently than this are flagged as stale by ingress validation. Note: the UCL calculation requires measurements at least every 5 minutes to produce accurate results, so this value should not exceed 5 minutes for assets that participate in the uncontrollable-load computation.

    without_transaction_expected_measurement_interval object

    Expected measurement interval for the asset when no transaction is active. When null, the asset is always considered valid while idle. Note: the UCL calculation requires measurements at least every 5 minutes to produce accurate results, so if this asset contributes to the uncontrollable-load computation it should still report at least every 5 minutes.

    anyOf
    number
    forecasting_configuration objectrequired
    forecasted_devices object[]required
  • Array [
  • device_idDevice Id (string)required
    parent_collector_idParent Collector Id (string)required
    train_windowTrain Window (number)
    Default value: 90
    sample_sizeSample Size (number)
    Default value: 900
    time_fieldTime Field (string)required
    forecasted_fieldForecasted Field (string)required
    training_interval object
    anyOf
    string

    Possible values: Value must match regular expression ^P(T?\d+.*)$

    activeActive (boolean)
    Default value: true
    forecast_typeDeviceForecastType (string)

    Possible values: [pv, load, calculated_ucl, aggregated_pv]

    Default value: pv
  • ]
  • ucl_calculation_activeUcl Calculation Active (boolean)required
    driver_email_notifications_enabledDriver Email Notifications Enabled (boolean)
    Default value: true
    activeActive (boolean)required
    connections objectrequired
    anyOf
    mqtt objectrequired
    clusterCluster (string)
    Default value: mqtt.pleevi.ai
    energy_measurement_topicEnergy Measurement Topic (string)required
    transaction_topicTransaction Topic (string)required
    advice_topicAdvice Topic (string)required
    notification_topicNotification Topic (string)required
  • ]
  • page_sizePage Size (integer)required
    end_cursor object

    Cursor to retrieve the next page of results.

    anyOf
    string

    Possible values: non-empty

    has_next_pageHas Next Page (boolean)
    Default value: false
    PaginatedResponse[Site]
    {
    "data": [
    {
    "_id": "5eb7cf5a86d9755df3a6c593",
    "partner_id": "string",
    "site_id": "string",
    "name": "Brussels Charging Hub",
    "location": {
    "name": "Brussels Office",
    "coordinates": [
    50.8503,
    4.3517,
    0
    ]
    },
    "country": "BE",
    "status": "inactive",
    "validation_status": {
    "status": "UNKNOWN",
    "site_configuration_status": {
    "status": "UNKNOWN",
    "configuration_added": {
    "status": "UNKNOWN"
    },
    "configuration_complete": {
    "status": "UNKNOWN",
    "missing_assets": [
    "charger-A1",
    "PV_panel_1"
    ]
    },
    "valid_for_optimization": {
    "status": "UNKNOWN",
    "validation_errors": "string"
    }
    },
    "optimization_configuration_status": {
    "status": "UNKNOWN"
    },
    "ingress_status": {
    "status": "UNKNOWN",
    "receiving_measurement_data": {
    "status": "UNKNOWN",
    "not_receiving_data_from": [
    "charger-A1"
    ],
    "all_assets": false
    }
    },
    "last_validation": "2024-07-29T15:51:28.071Z"
    },
    "configurations": {
    "site_configuration": {
    "device_list": [
    {
    "name": "LR34_001",
    "collector": "main_collector",
    "ingress_validation": {
    "with_transaction_expected_measurement_interval": 0,
    "without_transaction_expected_measurement_interval": 0
    },
    "type": "charging_pole_3phase",
    "line_current": 32,
    "pin_to_phase_mapping": {
    "pin_list": [
    "pin1"
    ],
    "phase_list": [
    "L1"
    ]
    }
    },
    {
    "phase_permutations": {
    "parent": [
    "L1"
    ],
    "child": [
    "L1"
    ]
    },
    "name": "LR34_001",
    "collector": "main_collector",
    "ingress_validation": {
    "with_transaction_expected_measurement_interval": 0,
    "without_transaction_expected_measurement_interval": 0
    },
    "type": "dc_charging_pole",
    "max_power": 250000,
    "strategy": "load-balancing"
    },
    {
    "phase_permutations": {
    "parent": [
    "L1"
    ],
    "child": [
    "L1"
    ]
    },
    "name": "LR34_001",
    "collector": "main_collector",
    "ingress_validation": {
    "with_transaction_expected_measurement_interval": 0,
    "without_transaction_expected_measurement_interval": 0
    },
    "type": "forecasted_series_3phase",
    "line_current": 32,
    "forecast_type": "pv",
    "should_be_aggregated": false,
    "curtailment_mode": "none"
    },
    {
    "phase_permutations": {
    "parent": [
    "L1"
    ],
    "child": [
    "L1"
    ]
    },
    "name": "LR34_001",
    "collector": "main_collector",
    "ingress_validation": {
    "with_transaction_expected_measurement_interval": 0,
    "without_transaction_expected_measurement_interval": 0
    },
    "type": "battery_energy_storage_system",
    "charging_efficiency": 0.95,
    "discharging_efficiency": 0.95,
    "maximum_charging_power": 50000,
    "maximum_discharging_power": 50000,
    "operational_battery_capacity": 100000,
    "charging_priority": 5,
    "discharging_priority": 5,
    "policies": [
    {
    "type": "schedule",
    "schedule": {
    "frequency": "weekly",
    "day_of_week": [
    "monday",
    "friday"
    ],
    "time": "09:00",
    "timezone": "America/New_York"
    },
    "minimum_state_of_charge": 20,
    "maximum_state_of_charge": 80,
    "violation_price_euros_per_mwh": 3000000
    },
    {
    "type": "charge-hysteresis",
    "start_charging_below": 10,
    "stop_charging_at": 20
    }
    ]
    }
    ],
    "collector_list": [
    {
    "phase_permutations": {
    "parent": [
    "L1"
    ],
    "child": [
    "L1"
    ]
    },
    "name": "main_collector",
    "children": [
    null
    ],
    "line_current": 400,
    "safe_line_current": 300,
    "min_phase_current": 0,
    "phase_voltage": 230,
    "commodity": "electricity",
    "1P_3P": "3P",
    "nb_of_phases": 0
    }
    ]
    },
    "io_configuration": {
    "asset_io_config": [
    {
    "asset_id": "string",
    "config": {
    "type": "modbus-tcp",
    "ip": "string",
    "port": 0,
    "registers": {
    "connector_id": 0,
    "type": "alfen"
    }
    },
    "brand": "Alfen",
    "model": "Eve Single Pro-line"
    }
    ],
    "controller_mode": "read_only",
    "phase_permutation_mode": "worst_case"
    },
    "optimization_configuration": {
    "peak_minimization": {
    "active": true,
    "peak_limit": 100000
    },
    "negative_peak_minimization": {
    "active": true,
    "peak_limit": 100000
    },
    "cost_minimization_active": true,
    "planning_frequency": "PT15M",
    "planning_horizon": "P1D"
    },
    "contract": {
    "fixed_offtake_cost_per_mwh": 0,
    "fixed_injection_cost_per_mwh": 0,
    "contract_type": "fixed"
    },
    "revenue": {
    "revenue_per_kwh_ac_charged": 0.25,
    "revenue_per_kwh_dc_charged": 0.55
    },
    "dso": {
    "dso": "string",
    "region": "Imewo",
    "connection_type": "Low Voltage Network",
    "toegangsvermogen": 0
    },
    "ingress_validation": {
    "main_collector_expected_measurement_interval": 0,
    "asset": {
    "with_transaction_expected_measurement_interval": 0,
    "without_transaction_expected_measurement_interval": 0
    },
    "per_asset_type": {}
    },
    "forecasting_configuration": {
    "forecasted_devices": [
    {
    "device_id": "PV@main_collector",
    "parent_collector_id": "main_collector",
    "train_window": 90,
    "sample_size": 900,
    "time_field": "timestamp",
    "forecasted_field": "powerValue",
    "training_interval": "P1DT",
    "active": true,
    "forecast_type": "pv"
    }
    ]
    },
    "ucl_calculation_active": true
    },
    "driver_email_notifications_enabled": true,
    "active": true,
    "connections": {
    "mqtt": {
    "cluster": "mqtt.pleevi.ai",
    "energy_measurement_topic": "pleevi/v2/partner-1/site-1/asset/<asset_id>/energyMeasurement",
    "transaction_topic": "pleevi/v2/partner-1/site-1/asset/<asset_id>/transaction",
    "advice_topic": "pleevi/v2/partner-1/site-1/asset/<asset_id>/advice",
    "notification_topic": "pleevi/v2/partner-1/site-1/notification/<event_name>"
    }
    }
    }
    ],
    "page_size": 0,
    "end_cursor": "string",
    "has_next_page": false
    }