> ## Documentation Index
> Fetch the complete documentation index at: https://docs.trlyr.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Gets a selection of operational data of a virtual-asset as a timeseries.

> Gets a selection of operational data of a virtual-asset as a timeseries.

Returns a JSON representation of the selected operational data and its metadata at 15 minute granularity.

The user selects the relevant categories of operational data through the query parameter `categories`, which is a comma separated list. E.g. `categories=energyCapacityAvailable,energyCapacityRated`
The following categories are available:

`chargeEfficiency`: The one-way efficiency of the virtual asset's charging operation as a ratio, e.g. `0.95`.

`dischargeEfficiency`: The one-way efficiency of the virtual asset's discharging operation as a ratio, e.g. `0.95`.

`energyCapacityRated`: The rated energy capacity of the virtual asset in kWh, e.g. `8000.0`.

`energyCapacityAvailable`: The available energy capacity of the virtual asset in kWh at the given timestamp, e.g. `8000.0`.

`powerCapacityChargeRated`: The rated charge power capacity of the virtual asset in kW, e.g. `8000.0`.

`powerCapacityChargeAvailable`: The available charge power capacity of the virtual asset in kW, e.g. `8000.0`.

`powerCapacityDischargeRated`: The rated discharge power capacity of the virtual asset in kW, e.g. `8000.0`.

`powerCapacityDischargeAvailable`: The available discharge power capacity of the virtual asset in kW, e.g. `8000.0`.

`maximumDeliverablePower`: The upper bound on signed power in kW that the virtual asset may schedule for the relevant wholesale delivery period, subject to relevant limits e.g. `5000.0`. Note that this value can be negative if the asset is in a state where it must charge, e.g. to respect ancillary market flexibility reserves.

`minimumDeliverablePower`: The lower bound on signed power in kW that the virtual asset may schedule for the relevant wholesale delivery period, subject to relevant limits e.g. `-5000.0`. Note that this value can be positive if the asset is in a state where it must discharge, e.g. to respect ancillary market flexibility reserves.

`stateOfChargeBoundsUpper`: The upper boundary of the state of charge of the virtual asset as a ratio, e.g. `0.9` if the virtual-asset is not allowed to be charged beyond 90%. This is measured relative to the currently available energy capacity, and thus should always equal `stateOfEnergyBoundsUpper` divided by `energyCapacityAvailable`.

`stateOfChargeBoundsLower`: The lower boundary of the state of charge of the virtual asset as a ratio, e.g. `0.1` if the virtual-asset is not allowed to be discharged below 10%. This is measured relative to the currently available energy capacity, and thus should always equal `stateOfEnergyBoundsLower` divided by `energyCapacityAvailable`.

`stateOfChargeProjection`: The projected state of charge of the virtual asset as a ratio, e.g. `0.50` for an asset projected to be at 50% state-of-charge. This is measured relative to the currently available energy capacity, and thus should always equal `stateOfEnergyProjection` divided by `energyCapacityAvailable`.

`stateOfEnergyProjection`: The projected state of energy of the virtual asset, based on its initial/current state of charge and schedule in kWh, e.g. `8000.0`.

`stateOfEnergy`: The actual state of energy of the virtual asset, in kWh, e.g. `8000.0`.

`stateOfEnergyBoundsUpper`: The allowed upper boundary of the state of energy of the virtual asset in kWh, e.g. `7200.0` if the virtual-asset is not allowed to be charged beyond 7200 kWh. This will equal `stateOfChargeBoundsUpper` multiplied by `availableEnergyCapacity`.

`stateOfEnergyBoundsLower`: The allowed lower boundary of the state of energy of the virtual asset in kWh, e.g. `800.0` if the virtual-asset is not allowed to discharged below 800 kWh. This will equal `stateOfChargeBoundsLower` multiplied by `availableEnergyCapacity`.

`stateOfCharge`: The state of energy of the virtual-asset as a fraction of available energy capacity `energyCapacityAvailable` as a ratio, e.g. `0.10` for a virtual-asset with 1000 kWh of available capacity at a state of energy of 100 kWh.

`frozenEnergy`: The frozen energy of the virtual asset in kWh, e.g. `500.0`. This is energy that is not dispatchable due to an unavailability and is expected to be restored upon the end of that unavailability.

`frozenEnergyProjection`: The projected frozen energy of the virtual asset in kWh, e.g. `500.0`.

`energyCharged`: The sum total of charged energy of the virtual asset in kWh, e.g. `100.0`.

`energyDischarged`: The sum total of discharged energy of the virtual asset in kWh, e.g. `100.0`.

`cyclesWholesale`: The sum total of discharged energy of the virtual asset in the wholesale market divided by the rated energy capacity of the virtual asset, e.g. `0.1`.

`cyclesFCR`: The sum total of discharged energy of the virtual asset in the FCR market divided by the rated energy capacity of the virtual asset, e.g. `0.1`.

`cyclesAFRR`: The sum total of discharged energy of the virtual asset in the aFRR market divided by the rated energy capacity of the virtual asset, e.g. `0.1`.

`cyclesTotal`: The sum total of discharged energy of the virtual asset in all markets divided by the rated energy capacity of the virtual asset, e.g. `0.1`.

`availableEnergyDischargesWholesale`: The sum total of discharged energy of the virtual asset in the wholesale market divided by the available energy capacity of the virtual asset, e.g. `0.1`.

`availableEnergyDischargesFCR`: The sum total of discharged energy of the virtual asset in the FCR market divided by the available energy capacity of the virtual asset, e.g. `0.1`.

`availableEnergyDischargesAFRR`: The sum total of discharged energy of the virtual asset in the aFRR market divided by the available energy capacity of the virtual asset, e.g. `0.1`.

`availableEnergyDischargesTotal`: The sum total of discharged energy of the virtual asset in all markets divided by the available energy capacity of the virtual asset, e.g. `0.1`.

`afrrPosCapacityAvailable`: The maximum available discharge power which can be bid into positive aFRR market products in kW, e.g. `7000.0`. This value may be reduced during periods of unavailability.

`afrrPosCapacityAvailableMinusFcr`: The maximum available discharge power which can be bid into positive aFRR market products in kW, while taking into account FCR commitments and maxTotalCapacity validation, e.g. `1000.0`. The value is calculated according to the following formula: `afrrPosCapacityAvailableMinusFcr = minimum((maxTotalAncillaryCapacityDischargeAvailable - fcrCommitment), afrrPosCapacityAvailable)`. This value may be reduced during periods of unavailability.

`afrrPosCapacityRated`: The maximum rated discharge power which can be bid into positive aFRR market products in kW, e.g. `7000.0`. This value remains unchanged during periods of unavailability.

`afrrNegCapacityAvailable`: The maximum available charge power which can be bid into negative aFRR market products in kW, e.g. `7000.0`. This value may be reduced during periods of unavailability.

`afrrNegCapacityAvailableMinusFcr`: The maximum available charge power which can be bid into negative aFRR market products in kW, while taking into account FCR commitments and maxTotalCapacity validation, e.g. `1000.0`. The value is calculated according to the following formula: `afrrNegCapacityAvailableMinusFcr = minimum((maxTotalAncillaryCapacityChargeAvailable - fcrCommitment), afrrNegCapacityAvailable)`. This value may be reduced during periods of unavailability.

`afrrNegCapacityRated`: The maximum rated charge power which can be bid into negative aFRR market products in kW, e.g. `7000.0`. This value remains unchanged during periods of unavailability.

`afrrActivation`: The sum total of activated positive/discharge and negative/charge power delivered by the virtual asset in the aFRR ancillary market in kW, e.g. `2000.0`.

`afrrPosActivation`: The sum total of activated positive/discharge power delivered by the virtual asset in the aFRR Pos ancillary market in kW, e.g. `3000.0`.

`afrrNegActivation`: The sum total of activated negative/charge power delivered by the virtual asset in the aFRR Neg ancillary market in kW, e.g. `-1000.0`.

`fcrCapacityAvailable`: The maximum available power capacity which can be bid into FCR market products in kW, e.g. `7000.0`. This value may be reduced during periods of unavailability.

`fcrCapacityRated`: The maximum rated power capacity which can be bid into FCR market products in kW, e.g. `7000.0`. This value remains unchanged during periods of unavailability.

`fcrActivation`: The sum total of activated power delivered by the virtual asset in the FCR ancillary market in kW, e.g. `1000.0`.

`maxTotalAncillaryCapacityChargeAvailable`: The maximum total sum of available charge (negative) power capacity that can be bid across markets in kW, e.g. `8000.0`. This includes all bids with a negative bid direction (FCR and aFRR Neg). This value may be reduced during periods of unavailability.

`maxTotalAncillaryCapacityChargeRated`: The maximum total sum of rated charge (negative) power capacity that can be bid across markets in kW, e.g. `10000.0`. This includes all bids with a negative bid direction (FCR and aFRR Neg). This value remains unchanged during periods of unavailability.

`maxTotalAncillaryCapacityDischargeAvailable`: The maximum total sum of available discharge (positive) power capacity that can be bid across markets in kW, e.g. `8000.0`. This includes all bids with a positive bid direction (FCR and aFRR Pos). This value may be reduced during periods of unavailability.

`maxTotalAncillaryCapacityDischargeRated`: The maximum total sum of rated discharge (positive) power capacity that can be bid across markets in kW, e.g. `10000.0`. This includes all bids with a positive bid direction (FCR and aFRR Pos). This value remains unchanged during periods of unavailability.

`fcrCommitment`: The committed FCR capacity of the virtual asset for the latest delivery period in kW, e.g. `5000.0`. Before the FCR auction results are released this reflects the total power capacity bid into FCR; once the auction clears it reflects the active commitment that has to be delivered. This value may be reduced during periods of unavailability.

`afrrPosCommitment`: The committed aFRR Pos (discharge) capacity of the virtual asset for the latest delivery period in kW, e.g. `5000.0`. Before the aFRR auction results are released this reflects the total power capacity bid into aFRR Pos; once the auction clears it reflects the active commitment that has to be delivered. This value may be reduced during periods of unavailability.

`afrrNegCommitment`: The committed aFRR Neg (charge) capacity of the virtual asset for the latest delivery period in kW, e.g. `5000.0`. Before the aFRR auction results are released this reflects the total power capacity bid into aFRR Neg; once the auction clears it reflects the active commitment that has to be delivered. This value may be reduced during periods of unavailability.

`wholesalePowerCapacityChargeAvailable`: The charge power capacity of the virtual asset which is available for wholesale trading in kW, e.g. `5000.0`. Reduced by pending and accepted FCR and aFRR Neg ancillary commitments. This value may change during periods of unavailability.

`wholesalePowerCapacityDischargeAvailable`: The discharge power capacity of the virtual asset which is available for wholesale trading in kW, e.g. `5000.0`. Reduced by pending and accepted FCR and aFRR Pos ancillary commitments. This value may change during periods of unavailability.

`marketableCapacityAFRRPos`: DEPRECATED. Please use the new category name instead: `afrrPosCapacityAvailable`.

`marketableCapacityAFRRNeg`: DEPRECATED. Please use the new category name instead: `afrrNegCapacityAvailable`.

`marketableCapacityFCR`: DEPRECATED. Please use the new category name instead: `fcrCapacityAvailable`.

Along with the selected operational data, a metadata object is returned which provides the unit for the selected datapoint.

Note that it is required to provide `start` and `end` params to specify the time interval for which to retrieve values. This range is greedy, in that it will match any timeseries point included in its range, including on the boundaries. e.g., setting a start of `2025-06-17T00:00:00Z` and an end of `2025-06-17T00:30:00Z` would return the points at 00:00:00, 00:15:00, and 00:30:00 which collectively cover a period from 00:00:00 to 00:45:00.

An example response would be:

```json
{
  "data": {
    "dischargeEfficiency": {
      "metaData": {
        "unit": "ratio"
      },
      "dataPoints": [
        {
          "timestamp": "2025-07-11T22:00:00Z",
          "value": 0.95
        },
        {
          "timestamp": "2025-07-11T22:15:00Z",
          "values": 0.95
        }
      ]
    },
    "marketableCapacityAFRRPos": {
      "metaData": {
        "unit": "kW"
      },
      "dataPoints": [
        {
          "timestamp": "2025-07-11T22:00:00Z",
          "value": 1000
        },
        {
          "timestamp": "2025-07-11T22:15:00Z",
          "values": 1000
        }
      ]
    },
    "marketableCapacityFCR": {
      "metaData": {
        "unit": "kW"
      },
      "dataPoints": [
        {
          "timestamp": "2025-07-11T22:00:00Z",
          "value": 1000
        },
        {
          "timestamp": "2025-07-11T22:15:00Z",
          "values": 1000
        }
      ]
    }
  }
}
```





## OpenAPI

````yaml https://api.sandbox.trlyr.com/docs/doc.json get /organisations/{organisationID}/virtual-assets/{virtualAssetID}/operational
openapi: 3.1.0
info:
  description: >
    This API allows clients to manage virtual-assets and blocks on the terralayr
    system.


    A virtual asset is a virtual battery, it has static parameters that dictate
    how much power it can import / export, how much energy it can store, and how
    efficiently it charges / discharges. It also has a state of charge which
    changes as the virtual asset exports and imports power.


    A block represents a slice of the power capacity of a virtual asset over
    time, and has a schedule which can be updated to control what the
    virtual-asset will do.


    Virtual assets should be kept balanced: you should manage the schedule such
    that the such that state of charge at the end of its lifetime is 50%. It is
    possible to submit schedules that do not end at 50%, but the response will
    include information about how much imbalance is left.


    ### Authorization


    All the underneath requests require a Bearer-type `Authorization` Header
    i.e. in the form : `Authorization: Bearer <YOUR_TOKEN>`.


    To retrieve a valid token you must log in to our system using a
    password-username authentication as follows:


    ```

    POST https://api.sandbox.trlyr.com/auth/public/authenticate

    ```


    with the following JSON body:


    ```

    {
        "username": "YOUR_USERNAME",
        "password": "YOUR_PASSWORD"
    }

    ```


    Your username and password are the ones you created after receiving an
    invitation to join your organisation.


    You should receive a JSON response body from which you can extract your
    token under `access_token`.


    If you have any questions, don't hesitate to contact our account manager at
    the following address: support@trlyr.com.
  title: terralayr API
  version: 1.11.3
servers:
  - description: Production API
    url: https://api.trlyr.com
  - description: Sandbox API
    url: https://api.sandbox.trlyr.com
security: []
tags:
  - name: virtual-assets
  - name: afrr
  - name: fcr
  - name: ancillary
  - name: blocks
externalDocs:
  description: ''
  url: ''
paths:
  /organisations/{organisationID}/virtual-assets/{virtualAssetID}/operational:
    get:
      tags:
        - virtual-assets
      summary: Gets a selection of operational data of a virtual-asset as a timeseries.
      description: >+
        Gets a selection of operational data of a virtual-asset as a timeseries.


        Returns a JSON representation of the selected operational data and its
        metadata at 15 minute granularity.


        The user selects the relevant categories of operational data through the
        query parameter `categories`, which is a comma separated list. E.g.
        `categories=energyCapacityAvailable,energyCapacityRated`

        The following categories are available:


        `chargeEfficiency`: The one-way efficiency of the virtual asset's
        charging operation as a ratio, e.g. `0.95`.


        `dischargeEfficiency`: The one-way efficiency of the virtual asset's
        discharging operation as a ratio, e.g. `0.95`.


        `energyCapacityRated`: The rated energy capacity of the virtual asset in
        kWh, e.g. `8000.0`.


        `energyCapacityAvailable`: The available energy capacity of the virtual
        asset in kWh at the given timestamp, e.g. `8000.0`.


        `powerCapacityChargeRated`: The rated charge power capacity of the
        virtual asset in kW, e.g. `8000.0`.


        `powerCapacityChargeAvailable`: The available charge power capacity of
        the virtual asset in kW, e.g. `8000.0`.


        `powerCapacityDischargeRated`: The rated discharge power capacity of the
        virtual asset in kW, e.g. `8000.0`.


        `powerCapacityDischargeAvailable`: The available discharge power
        capacity of the virtual asset in kW, e.g. `8000.0`.


        `maximumDeliverablePower`: The upper bound on signed power in kW that
        the virtual asset may schedule for the relevant wholesale delivery
        period, subject to relevant limits e.g. `5000.0`. Note that this value
        can be negative if the asset is in a state where it must charge, e.g. to
        respect ancillary market flexibility reserves.


        `minimumDeliverablePower`: The lower bound on signed power in kW that
        the virtual asset may schedule for the relevant wholesale delivery
        period, subject to relevant limits e.g. `-5000.0`. Note that this value
        can be positive if the asset is in a state where it must discharge, e.g.
        to respect ancillary market flexibility reserves.


        `stateOfChargeBoundsUpper`: The upper boundary of the state of charge of
        the virtual asset as a ratio, e.g. `0.9` if the virtual-asset is not
        allowed to be charged beyond 90%. This is measured relative to the
        currently available energy capacity, and thus should always equal
        `stateOfEnergyBoundsUpper` divided by `energyCapacityAvailable`.


        `stateOfChargeBoundsLower`: The lower boundary of the state of charge of
        the virtual asset as a ratio, e.g. `0.1` if the virtual-asset is not
        allowed to be discharged below 10%. This is measured relative to the
        currently available energy capacity, and thus should always equal
        `stateOfEnergyBoundsLower` divided by `energyCapacityAvailable`.


        `stateOfChargeProjection`: The projected state of charge of the virtual
        asset as a ratio, e.g. `0.50` for an asset projected to be at 50%
        state-of-charge. This is measured relative to the currently available
        energy capacity, and thus should always equal `stateOfEnergyProjection`
        divided by `energyCapacityAvailable`.


        `stateOfEnergyProjection`: The projected state of energy of the virtual
        asset, based on its initial/current state of charge and schedule in kWh,
        e.g. `8000.0`.


        `stateOfEnergy`: The actual state of energy of the virtual asset, in
        kWh, e.g. `8000.0`.


        `stateOfEnergyBoundsUpper`: The allowed upper boundary of the state of
        energy of the virtual asset in kWh, e.g. `7200.0` if the virtual-asset
        is not allowed to be charged beyond 7200 kWh. This will equal
        `stateOfChargeBoundsUpper` multiplied by `availableEnergyCapacity`.


        `stateOfEnergyBoundsLower`: The allowed lower boundary of the state of
        energy of the virtual asset in kWh, e.g. `800.0` if the virtual-asset is
        not allowed to discharged below 800 kWh. This will equal
        `stateOfChargeBoundsLower` multiplied by `availableEnergyCapacity`.


        `stateOfCharge`: The state of energy of the virtual-asset as a fraction
        of available energy capacity `energyCapacityAvailable` as a ratio, e.g.
        `0.10` for a virtual-asset with 1000 kWh of available capacity at a
        state of energy of 100 kWh.


        `frozenEnergy`: The frozen energy of the virtual asset in kWh, e.g.
        `500.0`. This is energy that is not dispatchable due to an
        unavailability and is expected to be restored upon the end of that
        unavailability.


        `frozenEnergyProjection`: The projected frozen energy of the virtual
        asset in kWh, e.g. `500.0`.


        `energyCharged`: The sum total of charged energy of the virtual asset in
        kWh, e.g. `100.0`.


        `energyDischarged`: The sum total of discharged energy of the virtual
        asset in kWh, e.g. `100.0`.


        `cyclesWholesale`: The sum total of discharged energy of the virtual
        asset in the wholesale market divided by the rated energy capacity of
        the virtual asset, e.g. `0.1`.


        `cyclesFCR`: The sum total of discharged energy of the virtual asset in
        the FCR market divided by the rated energy capacity of the virtual
        asset, e.g. `0.1`.


        `cyclesAFRR`: The sum total of discharged energy of the virtual asset in
        the aFRR market divided by the rated energy capacity of the virtual
        asset, e.g. `0.1`.


        `cyclesTotal`: The sum total of discharged energy of the virtual asset
        in all markets divided by the rated energy capacity of the virtual
        asset, e.g. `0.1`.


        `availableEnergyDischargesWholesale`: The sum total of discharged energy
        of the virtual asset in the wholesale market divided by the available
        energy capacity of the virtual asset, e.g. `0.1`.


        `availableEnergyDischargesFCR`: The sum total of discharged energy of
        the virtual asset in the FCR market divided by the available energy
        capacity of the virtual asset, e.g. `0.1`.


        `availableEnergyDischargesAFRR`: The sum total of discharged energy of
        the virtual asset in the aFRR market divided by the available energy
        capacity of the virtual asset, e.g. `0.1`.


        `availableEnergyDischargesTotal`: The sum total of discharged energy of
        the virtual asset in all markets divided by the available energy
        capacity of the virtual asset, e.g. `0.1`.


        `afrrPosCapacityAvailable`: The maximum available discharge power which
        can be bid into positive aFRR market products in kW, e.g. `7000.0`. This
        value may be reduced during periods of unavailability.


        `afrrPosCapacityAvailableMinusFcr`: The maximum available discharge
        power which can be bid into positive aFRR market products in kW, while
        taking into account FCR commitments and maxTotalCapacity validation,
        e.g. `1000.0`. The value is calculated according to the following
        formula: `afrrPosCapacityAvailableMinusFcr =
        minimum((maxTotalAncillaryCapacityDischargeAvailable - fcrCommitment),
        afrrPosCapacityAvailable)`. This value may be reduced during periods of
        unavailability.


        `afrrPosCapacityRated`: The maximum rated discharge power which can be
        bid into positive aFRR market products in kW, e.g. `7000.0`. This value
        remains unchanged during periods of unavailability.


        `afrrNegCapacityAvailable`: The maximum available charge power which can
        be bid into negative aFRR market products in kW, e.g. `7000.0`. This
        value may be reduced during periods of unavailability.


        `afrrNegCapacityAvailableMinusFcr`: The maximum available charge power
        which can be bid into negative aFRR market products in kW, while taking
        into account FCR commitments and maxTotalCapacity validation, e.g.
        `1000.0`. The value is calculated according to the following formula:
        `afrrNegCapacityAvailableMinusFcr =
        minimum((maxTotalAncillaryCapacityChargeAvailable - fcrCommitment),
        afrrNegCapacityAvailable)`. This value may be reduced during periods of
        unavailability.


        `afrrNegCapacityRated`: The maximum rated charge power which can be bid
        into negative aFRR market products in kW, e.g. `7000.0`. This value
        remains unchanged during periods of unavailability.


        `afrrActivation`: The sum total of activated positive/discharge and
        negative/charge power delivered by the virtual asset in the aFRR
        ancillary market in kW, e.g. `2000.0`.


        `afrrPosActivation`: The sum total of activated positive/discharge power
        delivered by the virtual asset in the aFRR Pos ancillary market in kW,
        e.g. `3000.0`.


        `afrrNegActivation`: The sum total of activated negative/charge power
        delivered by the virtual asset in the aFRR Neg ancillary market in kW,
        e.g. `-1000.0`.


        `fcrCapacityAvailable`: The maximum available power capacity which can
        be bid into FCR market products in kW, e.g. `7000.0`. This value may be
        reduced during periods of unavailability.


        `fcrCapacityRated`: The maximum rated power capacity which can be bid
        into FCR market products in kW, e.g. `7000.0`. This value remains
        unchanged during periods of unavailability.


        `fcrActivation`: The sum total of activated power delivered by the
        virtual asset in the FCR ancillary market in kW, e.g. `1000.0`.


        `maxTotalAncillaryCapacityChargeAvailable`: The maximum total sum of
        available charge (negative) power capacity that can be bid across
        markets in kW, e.g. `8000.0`. This includes all bids with a negative bid
        direction (FCR and aFRR Neg). This value may be reduced during periods
        of unavailability.


        `maxTotalAncillaryCapacityChargeRated`: The maximum total sum of rated
        charge (negative) power capacity that can be bid across markets in kW,
        e.g. `10000.0`. This includes all bids with a negative bid direction
        (FCR and aFRR Neg). This value remains unchanged during periods of
        unavailability.


        `maxTotalAncillaryCapacityDischargeAvailable`: The maximum total sum of
        available discharge (positive) power capacity that can be bid across
        markets in kW, e.g. `8000.0`. This includes all bids with a positive bid
        direction (FCR and aFRR Pos). This value may be reduced during periods
        of unavailability.


        `maxTotalAncillaryCapacityDischargeRated`: The maximum total sum of
        rated discharge (positive) power capacity that can be bid across markets
        in kW, e.g. `10000.0`. This includes all bids with a positive bid
        direction (FCR and aFRR Pos). This value remains unchanged during
        periods of unavailability.


        `fcrCommitment`: The committed FCR capacity of the virtual asset for the
        latest delivery period in kW, e.g. `5000.0`. Before the FCR auction
        results are released this reflects the total power capacity bid into
        FCR; once the auction clears it reflects the active commitment that has
        to be delivered. This value may be reduced during periods of
        unavailability.


        `afrrPosCommitment`: The committed aFRR Pos (discharge) capacity of the
        virtual asset for the latest delivery period in kW, e.g. `5000.0`.
        Before the aFRR auction results are released this reflects the total
        power capacity bid into aFRR Pos; once the auction clears it reflects
        the active commitment that has to be delivered. This value may be
        reduced during periods of unavailability.


        `afrrNegCommitment`: The committed aFRR Neg (charge) capacity of the
        virtual asset for the latest delivery period in kW, e.g. `5000.0`.
        Before the aFRR auction results are released this reflects the total
        power capacity bid into aFRR Neg; once the auction clears it reflects
        the active commitment that has to be delivered. This value may be
        reduced during periods of unavailability.


        `wholesalePowerCapacityChargeAvailable`: The charge power capacity of
        the virtual asset which is available for wholesale trading in kW, e.g.
        `5000.0`. Reduced by pending and accepted FCR and aFRR Neg ancillary
        commitments. This value may change during periods of unavailability.


        `wholesalePowerCapacityDischargeAvailable`: The discharge power capacity
        of the virtual asset which is available for wholesale trading in kW,
        e.g. `5000.0`. Reduced by pending and accepted FCR and aFRR Pos
        ancillary commitments. This value may change during periods of
        unavailability.


        `marketableCapacityAFRRPos`: DEPRECATED. Please use the new category
        name instead: `afrrPosCapacityAvailable`.


        `marketableCapacityAFRRNeg`: DEPRECATED. Please use the new category
        name instead: `afrrNegCapacityAvailable`.


        `marketableCapacityFCR`: DEPRECATED. Please use the new category name
        instead: `fcrCapacityAvailable`.


        Along with the selected operational data, a metadata object is returned
        which provides the unit for the selected datapoint.


        Note that it is required to provide `start` and `end` params to specify
        the time interval for which to retrieve values. This range is greedy, in
        that it will match any timeseries point included in its range, including
        on the boundaries. e.g., setting a start of `2025-06-17T00:00:00Z` and
        an end of `2025-06-17T00:30:00Z` would return the points at 00:00:00,
        00:15:00, and 00:30:00 which collectively cover a period from 00:00:00
        to 00:45:00.


        An example response would be:


        ```json

        {
          "data": {
            "dischargeEfficiency": {
              "metaData": {
                "unit": "ratio"
              },
              "dataPoints": [
                {
                  "timestamp": "2025-07-11T22:00:00Z",
                  "value": 0.95
                },
                {
                  "timestamp": "2025-07-11T22:15:00Z",
                  "values": 0.95
                }
              ]
            },
            "marketableCapacityAFRRPos": {
              "metaData": {
                "unit": "kW"
              },
              "dataPoints": [
                {
                  "timestamp": "2025-07-11T22:00:00Z",
                  "value": 1000
                },
                {
                  "timestamp": "2025-07-11T22:15:00Z",
                  "values": 1000
                }
              ]
            },
            "marketableCapacityFCR": {
              "metaData": {
                "unit": "kW"
              },
              "dataPoints": [
                {
                  "timestamp": "2025-07-11T22:00:00Z",
                  "value": 1000
                },
                {
                  "timestamp": "2025-07-11T22:15:00Z",
                  "values": 1000
                }
              ]
            }
          }
        }

        ```

      parameters:
        - description: Access token
          in: header
          name: Authorization
          required: true
          schema:
            default: Bearer <access token value>
            type: string
        - description: Organisation ID
          in: path
          name: organisationID
          required: true
          schema:
            type: string
        - description: Virtual Asset ID
          in: path
          name: virtualAssetID
          required: true
          schema:
            type: string
        - description: Selected Operational Data Categories
          in: query
          name: categories
          required: true
          schema:
            type: string
        - description: Query start time
          in: query
          name: start
          required: true
          schema:
            type: string
        - description: Query end time
          in: query
          name: end
          required: true
          schema:
            type: string
        - description: Data granularity (optional, minimum 4s)
          in: query
          name: granularity
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OperationalData'
          description: OK
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '500':
          description: Internal Server Error
components:
  schemas:
    OperationalData:
      properties:
        data:
          additionalProperties:
            $ref: '#/components/schemas/CategoryData'
          type: object
      required:
        - data
      type: object
    CategoryData:
      properties:
        dataPoints:
          items:
            $ref: '#/components/schemas/DataPoint'
          type: array
          uniqueItems: false
        metaData:
          $ref: '#/components/schemas/MetaData'
      required:
        - dataPoints
        - metaData
      type: object
    DataPoint:
      properties:
        timestamp:
          example: '2020-01-01T00:00:00+00:00'
          type: string
        value:
          example: 100
          type: number
      required:
        - timestamp
        - value
      type: object
    MetaData:
      properties:
        unit:
          $ref: '#/components/schemas/types.Unit'
      required:
        - unit
      type: object
    types.Unit:
      enum:
        - ''
        - PCT
        - KW
        - KWH
        - KW/S
        - AMP
        - V
        - C
        - HZ
        - WH
        - W
        - RATIO
        - EFC
        - EUR
        - GC02EQKWH
      example: kW
      type: string
      x-enum-varnames:
        - UnitNone
        - UnitPercent
        - UnitKilowatt
        - UnitKilowattHr
        - UnitKilowattPerSecond
        - UnitAmpere
        - UnitVolt
        - UnitCelsius
        - UnitHertz
        - UnitWattHour
        - UnitWatt
        - UnitRatio
        - UnitCycles
        - UnitEuro
        - UnitCarbonIntensity

````