> ## 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 physical asset as a timeseries.

> Gets a selection of operational data of a physical asset as a timeseries.

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

Callers must have access to the physical asset and the `Read:physical-asset-operational` permission.

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

The following categories are documented for public use.

Values are signed power in kW: charge is negative and discharge is positive. Thus `externalRestrictionMin = -1000`, `externalRestrictionMax = 2000` at `2025-07-11T22:00:00Z` implies that the asset may charge no more than 1 MW and discharge no more than 2 MW in the delivery period starting at `2025-07-11T22:00:00Z`.

`externalRestrictionMin`: The lower (most negative / charge-side) external power restriction of the physical asset in kW, e.g. `-1000.0`. This is a sparse timeseries: timestamps with no value set are omitted from the response.

`externalRestrictionMax`: The upper (most positive / discharge-side) external power restriction of the physical asset in kW, e.g. `2000.0`. This is a sparse timeseries: timestamps with no value set are omitted from the response.

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": {
    "externalRestrictionMin": {
      "metaData": {
        "unit": "kW"
      },
      "dataPoints": [
        {
          "timestamp": "2025-07-11T22:00:00Z",
          "value": -1000
        },
        {
          "timestamp": "2025-07-11T22:15:00Z",
          "value": -1000
        }
      ]
    },
    "externalRestrictionMax": {
      "metaData": {
        "unit": "kW"
      },
      "dataPoints": [
        {
          "timestamp": "2025-07-11T22:00:00Z",
          "value": 2000
        },
        {
          "timestamp": "2025-07-11T22:15:00Z",
          "value": 2000
        }
      ]
    }
  }
}
```




## OpenAPI

````yaml https://api.trlyr.com/physical-assets/docs/doc.json get /physical-assets/{physicalAssetID}/operational
openapi: 3.1.0
info:
  description: >
    This API manages physical assets on the terralayr platform: asset
    parameters, schedules, ancillary bids and results, metadata, logbook
    entries, unavailabilities, and EEX notifications.


    Endpoints documented here require a valid Bearer token and the appropriate
    organisation permissions for the physical asset.


    ### Authorization


    All documented endpoints require a Bearer-type `Authorization` header:


    ```

    Authorization: Bearer <YOUR_TOKEN>

    ```


    Obtain a token via the Auth API:


    ```

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

    ```


    Example POST body:


    ```

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

    ```



    If you have any questions, contact support@trlyr.com.
  title: terralayr Physical Assets API
  version: 1.0.4
servers:
  - description: Production API
    url: https://api.trlyr.com
  - description: Sandbox API
    url: https://api.sandbox.trlyr.com
security: []
tags:
  - name: health
  - name: physical-assets
  - name: schedule
  - name: ancillary
  - name: metadata
  - name: logbook
  - name: eex
  - name: operational
externalDocs:
  description: ''
  url: ''
paths:
  /physical-assets/{physicalAssetID}/operational:
    get:
      tags:
        - operational
      summary: >-
        Gets a selection of operational data of a physical asset as a
        timeseries.
      description: >
        Gets a selection of operational data of a physical asset as a
        timeseries.


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


        Callers must have access to the physical asset and the
        `Read:physical-asset-operational` permission.


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


        The following categories are documented for public use.


        Values are signed power in kW: charge is negative and discharge is
        positive. Thus `externalRestrictionMin = -1000`, `externalRestrictionMax
        = 2000` at `2025-07-11T22:00:00Z` implies that the asset may charge no
        more than 1 MW and discharge no more than 2 MW in the delivery period
        starting at `2025-07-11T22:00:00Z`.


        `externalRestrictionMin`: The lower (most negative / charge-side)
        external power restriction of the physical asset in kW, e.g. `-1000.0`.
        This is a sparse timeseries: timestamps with no value set are omitted
        from the response.


        `externalRestrictionMax`: The upper (most positive / discharge-side)
        external power restriction of the physical asset in kW, e.g. `2000.0`.
        This is a sparse timeseries: timestamps with no value set are omitted
        from the response.


        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": {
            "externalRestrictionMin": {
              "metaData": {
                "unit": "kW"
              },
              "dataPoints": [
                {
                  "timestamp": "2025-07-11T22:00:00Z",
                  "value": -1000
                },
                {
                  "timestamp": "2025-07-11T22:15:00Z",
                  "value": -1000
                }
              ]
            },
            "externalRestrictionMax": {
              "metaData": {
                "unit": "kW"
              },
              "dataPoints": [
                {
                  "timestamp": "2025-07-11T22:00:00Z",
                  "value": 2000
                },
                {
                  "timestamp": "2025-07-11T22:15:00Z",
                  "value": 2000
                }
              ]
            }
          }
        }

        ```
      parameters:
        - description: Access token
          in: header
          name: Authorization
          required: true
          schema:
            default: Bearer <access token value>
            type: string
        - description: Physical asset ID
          in: path
          name: physicalAssetID
          required: true
          schema:
            format: uuid
            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
      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
        '404':
          description: Not Found
        '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

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.