Powernaut resources API

Register, modify or delete flexible resources. You can add flexible resources to each site, such as batteries, heat pumps, electric vehicles, ... They are the physical resource that can offer flexibility. Each resource has an enrolment status for the markets it can participate in, which you can query.

OpenAPI Specification

powernaut-resources-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: Powernaut authentication resources API
  description: '

    # Getting Started


    Welcome to the Powernaut API Reference!


    Our API offers a robust and secure way to connect your flexible resources to flexibility buyers such as energy utilities/suppliers and system operators.


    This OpenAPI documentation is designed to provide a comprehensive and easy-to-understand guide for developers who are integrating their systems with Powernaut’s platform.


    By leveraging our API, you can seamlessly offer flexibility in several electricity markets, opening up additional revenue streams

    for your resources while contributing to a greener and more efficient electricity grid.

    '
  version: 1.0.0
  contact:
    name: Powernaut Support
    url: https://powernaut.io
    email: support@powernaut.io
  license:
    name: Creative Commons Attribution-ShareAlike 4.0 International
    url: https://creativecommons.org/licenses/by-sa/4.0/
servers:
- url: https://api.sandbox.powernaut.io
  description: Sandbox
- url: https://api.powernaut.io
  description: Production
tags:
- name: resources
  description: 'Register, modify or delete flexible resources.


    You can add flexible resources to each site, such as batteries, heat pumps, electric vehicles, ... They are the physical resource that can offer flexibility.


    Each resource has an enrolment status for the markets it can participate in, which you can query.'
  x-displayName: Resources
paths:
  /v1/connect/resources:
    post:
      description: 'Create a new resource.


        A maximum of 10 resources can be created per site.'
      operationId: CreateResource
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateResourceDto'
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourceDto'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestExceptionDto'
        '401':
          description: Not authorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedExceptionDto'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenExceptionDto'
      security:
      - edge-cloud: []
      - cloud-cloud: []
      summary: Create a resource
      tags:
      - resources
      x-codeSamples:
      - source: "import requests\nimport json\n\nurl = \"https://api.powernaut.io/v1/connect/resources\"\n\npayload = json.dumps({\n  \"type\": \"<string>\",\n  \"power\": {\n    \"active\": {\n      \"minimum\": \"<decimal>\",\n      \"maximum\": \"<decimal>\"\n    },\n    \"reactive\": {\n      \"minimum\": \"<decimal>\",\n      \"maximum\": \"<decimal>\"\n    }\n  },\n  \"site_id\": \"<uuid>\",\n  \"name\": \"<string>\",\n  \"external_id\": \"<string>\",\n  \"capacity\": {\n    \"minimum\": \"<decimal>\",\n    \"maximum\": \"<decimal>\"\n  },\n  \"group_id\": \"<uuid>\",\n  \"parent_id\": \"<uuid>\",\n  \"webhooks\": {\n    \"accepted\": \"<uri>\"\n  }\n})\nheaders = {\n  'Content-Type': 'application/json',\n  'Accept': 'application/json',\n  'Authorization': 'Bearer <token>'\n}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n"
        lang: python
        label: Python
      - source: "const myHeaders = new Headers();\nmyHeaders.append(\"Content-Type\", \"application/json\");\nmyHeaders.append(\"Accept\", \"application/json\");\nmyHeaders.append(\"Authorization\", \"Bearer <token>\");\n\nconst raw = JSON.stringify({\n  \"type\": \"<string>\",\n  \"power\": {\n    \"active\": {\n      \"minimum\": \"<decimal>\",\n      \"maximum\": \"<decimal>\"\n    },\n    \"reactive\": {\n      \"minimum\": \"<decimal>\",\n      \"maximum\": \"<decimal>\"\n    }\n  },\n  \"site_id\": \"<uuid>\",\n  \"name\": \"<string>\",\n  \"external_id\": \"<string>\",\n  \"capacity\": {\n    \"minimum\": \"<decimal>\",\n    \"maximum\": \"<decimal>\"\n  },\n  \"group_id\": \"<uuid>\",\n  \"parent_id\": \"<uuid>\",\n  \"webhooks\": {\n    \"accepted\": \"<uri>\"\n  }\n});\n\nconst requestOptions = {\n  method: \"POST\",\n  headers: myHeaders,\n  body: raw,\n  redirect: \"follow\"\n};\n\nfetch(\"https://api.powernaut.io/v1/connect/resources\", requestOptions)\n  .then((response) => response.text())\n  .then((result) => console.log(result))\n  .catch((error) => console.error(error));"
        lang: javascript
        label: JavaScript
      - source: "OkHttpClient client = new OkHttpClient().newBuilder()\n  .build();\nMediaType mediaType = MediaType.parse(\"application/json\");\nRequestBody body = RequestBody.create(mediaType, \"{\\n  \\\"type\\\": \\\"<string>\\\",\\n  \\\"power\\\": {\\n    \\\"active\\\": {\\n      \\\"minimum\\\": \\\"<decimal>\\\",\\n      \\\"maximum\\\": \\\"<decimal>\\\"\\n    },\\n    \\\"reactive\\\": {\\n      \\\"minimum\\\": \\\"<decimal>\\\",\\n      \\\"maximum\\\": \\\"<decimal>\\\"\\n    }\\n  },\\n  \\\"site_id\\\": \\\"<uuid>\\\",\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"external_id\\\": \\\"<string>\\\",\\n  \\\"capacity\\\": {\\n    \\\"minimum\\\": \\\"<decimal>\\\",\\n    \\\"maximum\\\": \\\"<decimal>\\\"\\n  },\\n  \\\"group_id\\\": \\\"<uuid>\\\",\\n  \\\"parent_id\\\": \\\"<uuid>\\\",\\n  \\\"webhooks\\\": {\\n    \\\"accepted\\\": \\\"<uri>\\\"\\n  }\\n}\");\nRequest request = new Request.Builder()\n  .url(\"https://api.powernaut.io/v1/connect/resources\")\n  .method(\"POST\", body)\n  .addHeader(\"Content-Type\", \"application/json\")\n  .addHeader(\"Accept\", \"application/json\")\n  .addHeader(\"Authorization\", \"Bearer <token>\")\n  .build();\nResponse response = client.newCall(request).execute();"
        lang: java
        label: Java
      - source: "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io/ioutil\"\n)\n\nfunc main() {\n\n  url := \"https://api.powernaut.io/v1/connect/resources\"\n  method := \"POST\"\n\n  payload := strings.NewReader(`{\n  \"type\": \"<string>\",\n  \"power\": {\n    \"active\": {\n      \"minimum\": \"<decimal>\",\n      \"maximum\": \"<decimal>\"\n    },\n    \"reactive\": {\n      \"minimum\": \"<decimal>\",\n      \"maximum\": \"<decimal>\"\n    }\n  },\n  \"site_id\": \"<uuid>\",\n  \"name\": \"<string>\",\n  \"external_id\": \"<string>\",\n  \"capacity\": {\n    \"minimum\": \"<decimal>\",\n    \"maximum\": \"<decimal>\"\n  },\n  \"group_id\": \"<uuid>\",\n  \"parent_id\": \"<uuid>\",\n  \"webhooks\": {\n    \"accepted\": \"<uri>\"\n  }\n}`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"Content-Type\", \"application/json\")\n  req.Header.Add(\"Accept\", \"application/json\")\n  req.Header.Add(\"Authorization\", \"Bearer <token>\")\n\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := ioutil.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}"
        lang: go
        label: Go
      - source: 'var client = new HttpClient();

          var request = new HttpRequestMessage(HttpMethod.Post, "https://api.powernaut.io/v1/connect/resources");

          request.Headers.Add("Accept", "application/json");

          request.Headers.Add("Authorization", "Bearer <token>");

          var content = new StringContent("{\n  \"type\": \"<string>\",\n  \"power\": {\n    \"active\": {\n      \"minimum\": \"<decimal>\",\n      \"maximum\": \"<decimal>\"\n    },\n    \"reactive\": {\n      \"minimum\": \"<decimal>\",\n      \"maximum\": \"<decimal>\"\n    }\n  },\n  \"site_id\": \"<uuid>\",\n  \"name\": \"<string>\",\n  \"external_id\": \"<string>\",\n  \"capacity\": {\n    \"minimum\": \"<decimal>\",\n    \"maximum\": \"<decimal>\"\n  },\n  \"group_id\": \"<uuid>\",\n  \"parent_id\": \"<uuid>\",\n  \"webhooks\": {\n    \"accepted\": \"<uri>\"\n  }\n}", null, "application/json");

          request.Content = content;

          var response = await client.SendAsync(request);

          response.EnsureSuccessStatusCode();

          Console.WriteLine(await response.Content.ReadAsStringAsync());

          '
        lang: csharp
        label: C#
      - source: "curl --location 'https://api.powernaut.io/v1/connect/resources' \\\n--header 'Content-Type: application/json' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer <token>' \\\n--data '{\n  \"type\": \"<string>\",\n  \"power\": {\n    \"active\": {\n      \"minimum\": \"<decimal>\",\n      \"maximum\": \"<decimal>\"\n    },\n    \"reactive\": {\n      \"minimum\": \"<decimal>\",\n      \"maximum\": \"<decimal>\"\n    }\n  },\n  \"site_id\": \"<uuid>\",\n  \"name\": \"<string>\",\n  \"external_id\": \"<string>\",\n  \"capacity\": {\n    \"minimum\": \"<decimal>\",\n    \"maximum\": \"<decimal>\"\n  },\n  \"group_id\": \"<uuid>\",\n  \"parent_id\": \"<uuid>\",\n  \"webhooks\": {\n    \"accepted\": \"<uri>\"\n  }\n}'"
        lang: curl
        label: cURL
    get:
      description: Gets all resources available to your current authorised scope, or for a site specifically.
      operationId: FindAllResources
      parameters:
      - name: site_id
        required: false
        in: query
        description: Identifier of the site to fetch resources for.
        schema:
          type: string
          format: uuid
      - name: connection_point_id
        required: false
        in: query
        description: 'Identifier of the site to fetch resources for.


          **Note**: This is deprecated, use `site_id` instead.'
        deprecated: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: All resources
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConnectionPointResourcesListDto'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestExceptionDto'
        '401':
          description: Not authorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedExceptionDto'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenExceptionDto'
      security:
      - edge-cloud: []
      - cloud-cloud: []
      summary: Get all resources
      tags:
      - resources
      x-codeSamples:
      - source: "import requests\n\nurl = \"https://api.powernaut.io/v1/connect/resources\"\n\npayload = {}\nheaders = {\n  'Accept': 'application/json',\n  'Authorization': 'Bearer <token>'\n}\n\nresponse = requests.request(\"GET\", url, headers=headers, data=payload)\n\nprint(response.text)\n"
        lang: python
        label: Python
      - source: "const myHeaders = new Headers();\nmyHeaders.append(\"Accept\", \"application/json\");\nmyHeaders.append(\"Authorization\", \"Bearer <token>\");\n\nconst requestOptions = {\n  method: \"GET\",\n  headers: myHeaders,\n  redirect: \"follow\"\n};\n\nfetch(\"https://api.powernaut.io/v1/connect/resources\", requestOptions)\n  .then((response) => response.text())\n  .then((result) => console.log(result))\n  .catch((error) => console.error(error));"
        lang: javascript
        label: JavaScript
      - source: "OkHttpClient client = new OkHttpClient().newBuilder()\n  .build();\nMediaType mediaType = MediaType.parse(\"text/plain\");\nRequestBody body = RequestBody.create(mediaType, \"\");\nRequest request = new Request.Builder()\n  .url(\"https://api.powernaut.io/v1/connect/resources\")\n  .method(\"GET\", body)\n  .addHeader(\"Accept\", \"application/json\")\n  .addHeader(\"Authorization\", \"Bearer <token>\")\n  .build();\nResponse response = client.newCall(request).execute();"
        lang: java
        label: Java
      - source: "package main\n\nimport (\n  \"fmt\"\n  \"net/http\"\n  \"io/ioutil\"\n)\n\nfunc main() {\n\n  url := \"https://api.powernaut.io/v1/connect/resources\"\n  method := \"GET\"\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, nil)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"Accept\", \"application/json\")\n  req.Header.Add(\"Authorization\", \"Bearer <token>\")\n\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := ioutil.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}"
        lang: go
        label: Go
      - source: 'var client = new HttpClient();

          var request = new HttpRequestMessage(HttpMethod.Get, "https://api.powernaut.io/v1/connect/resources");

          request.Headers.Add("Accept", "application/json");

          request.Headers.Add("Authorization", "Bearer <token>");

          var response = await client.SendAsync(request);

          response.EnsureSuccessStatusCode();

          Console.WriteLine(await response.Content.ReadAsStringAsync());

          '
        lang: csharp
        label: C#
      - source: 'curl --location ''https://api.powernaut.io/v1/connect/resources'' \

          --header ''Accept: application/json'' \

          --header ''Authorization: Bearer <token>'''
        lang: curl
        label: cURL
  /v1/connect/resources/{id}:
    get:
      description: Gets a resource by its unique ID.
      operationId: GetResource
      parameters:
      - name: id
        required: true
        in: path
        description: Identifier of the resource.
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: The resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourceDto'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestExceptionDto'
        '401':
          description: Not authorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedExceptionDto'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenExceptionDto'
        '404':
          description: Resource does not exist
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundDto_UmVzb3VyY2UgZG9lcyBub3QgZXhpc3Q'
      security:
      - edge-cloud: []
      - cloud-cloud: []
      summary: Get a resource
      tags:
      - resources
    patch:
      description: 'Update a resource by its unique ID.


        Only the properties you provide will be updated. Use `null` to unset a property.'
      operationId: UpdateResource
      parameters:
      - name: id
        required: true
        in: path
        description: Identifier of the resource you want to update.
        schema:
          type: string
          format: uuid
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateResourceDto'
      responses:
        '202':
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourceDto'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestExceptionDto'
        '401':
          description: Not authorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedExceptionDto'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenExceptionDto'
        '404':
          description: Resource does not exist
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundDto_UmVzb3VyY2UgZG9lcyBub3QgZXhpc3Q'
      security:
      - edge-cloud: []
      - cloud-cloud: []
      summary: Update a resource
      tags:
      - resources
    delete:
      description: 'Delete a resource


        **Important**: This action is irreversible and will remove all associated future bids and baselines.'
      operationId: RemoveResource
      parameters:
      - name: id
        required: true
        in: path
        description: Identifier of the resource you want to delete.
        schema:
          type: string
          format: uuid
      responses:
        '204':
          description: Deleted
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestExceptionDto'
        '401':
          description: Not authorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedExceptionDto'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenExceptionDto'
        '404':
          description: Resource does not exist
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundDto_UmVzb3VyY2UgZG9lcyBub3QgZXhpc3Q'
      security:
      - edge-cloud: []
      - cloud-cloud: []
      summary: Delete a resource
      tags:
      - resources
  /v1/connect/resources/{id}/activations:
    get:
      description: Gets the activations for a resource.
      operationId: GetActivationsForResource
      parameters:
      - name: id
        required: true
        in: path
        description: Identifier of the resource you want to get activations for.
        schema:
          type: string
          format: uuid
      - name: page
        required: false
        in: query
        description: Page number
        schema:
          type: number
      - name: page_size
        required: false
        in: query
        description: Page size
        schema:
          type: number
      - name: start
        required: false
        in: query
        description: An optional date from which to start filtering activations (ISO 8601)
        schema:
          type: string
      - name: end
        required: false
        in: query
        description: An optional date until which to filter activations (ISO 8601)
        schema:
          type: string
      responses:
        '200':
          description: A paginated list of activations
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProviderActivationSummaryListDto'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestExceptionDto'
        '401':
          description: Not authorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedExceptionDto'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenExceptionDto'
        '404':
          description: Resource does not exist
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundDto_UmVzb3VyY2UgZG9lcyBub3QgZXhpc3Q'
      security:
      - edge-cloud: []
      - cloud-cloud: []
      summary: Get activations
      tags:
      - resources
components:
  schemas:
    BadRequestExceptionDto:
      type: object
      properties:
        message:
          description: One or more specific error messages
          oneOf:
          - type: string
          - type: array
            items:
              type: string
          example:
          - Invalid datetime
          - Invalid page size
        error:
          type: string
          description: Bad Request
          example: Bad Request
        status_code:
          type: number
          description: '400'
          example: 400
      required:
      - message
      - error
      - status_code
    UnauthorizedExceptionDto:
      type: object
      properties:
        message:
          description: One or more specific error messages
          oneOf:
          - type: string
          - type: array
            items:
              type: string
          example: Unauthorized
        error:
          type: string
          description: Unauthorized
          example: Unauthorized
        status_code:
          type: number
          description: '401'
          example: 401
      required:
      - message
      - error
      - status_code
    UpdateResourceDto:
      type: object
      properties:
        name:
          type: string
          description: Human-readable name for this resource. Useful for reporting, but not required.
          example: Home Battery
          minLength: 1
        external_id:
          type: string
          description: Reference of the resource in external system (gateway, API, ...), used for mapping identifiers.
          example: NCC-1701
          minLength: 1
          nullable: true
        type:
          type: string
          description: Type of energy resource (battery, heat pump, solar, etc.).
          enum:
          - static_battery
          - heat_pump
          - electric_vehicle
          - electric_vehicle_charging_point
          - photovoltaic
          - wind
          - group
          - other
          - meter
          example: static_battery
        power:
          description: Power constraints for this resource.
          allOf:
          - $ref: '#/components/schemas/ResourcePowerDto'
        capacity:
          description: 'Capacity constraints for this resource (in kWh).


            This property is currently only required for battery resources.'
          allOf:
          - $ref: '#/components/schemas/ResourcePowerConstraints'
        parent_id:
          type: string
          description: 'Identifier of the physical parent resource in the site topology.


            Set this field to `null` to remove the parent relationship.


            Constraints:

            - Parent must exist and belong to the same site

            - Only meter-type resources can be parents

            - Group resources cannot have a parent

            - Hierarchy is limited to 10 levels deep'
          format: uuid
          nullable: true
        webhooks:
          description: Webhooks related to this resource, for example to be notified about the acceptance of a bid for this resource.
          allOf:
          - $ref: '#/components/schemas/ResourceWebhooksDto'
        group_id:
          type: string
          description: 'Identifier of the resource group that this resource should belong to.


            Set this field to `null` to remove a resource from its existing group.'
          format: uuid
          nullable: true
    CreateResourceDto:
      type: object
      properties:
        name:
          type: string
          description: Human-readable name for this resource. Useful for reporting, but not required.
          example: Home Battery
          minLength: 1
        external_id:
          type: string
          description: Reference of the resource in external system (gateway, API, ...), used for mapping identifiers.
          example: NCC-1701
          minLength: 1
          nullable: true
        type:
          type: string
          description: Type of energy resource (battery, heat pump, solar, etc.).
          enum:
          - static_battery
          - heat_pump
          - electric_vehicle
          - electric_vehicle_charging_point
          - photovoltaic
          - wind
          - group
          - other
          - meter
          example: static_battery
        power:
          description: Power constraints for this resource.
          allOf:
          - $ref: '#/components/schemas/ResourcePowerDto'
        capacity:
          description: 'Capacity constraints for this resource (in kWh).


            This property is currently only required for battery resources.'
          allOf:
          - $ref: '#/components/schemas/ResourcePowerConstraints'
        site_id:
          type: string
          description: Identifier for the site that this resource is part of.
          format: uuid
        group_id:
          type: string
          description: 'Identifier of the resource group that this resource should belong to.


            Only provide this when you want to immediately associate the resource with an existing group on the same site.'
          format: uuid
        parent_id:
          type: string
          description: 'Identifier of the physical parent resource in the site topology.


            Constraints:

            - Parent must exist and belong to the same site

            - Only meter-type resources can be parents

            - Group resources cannot have a parent

            - Hierarchy is limited to 10 levels deep'
          format: uuid
          nullable: true
        webhooks:
          description: Webhooks related to this resource, for example to be notified about the acceptance of a bid for this resource.
          allOf:
          - $ref: '#/components/schemas/ResourceWebhooksDto'
      required:
      - type
      - power
      - site_id
    ResourcePowerConstraints:
      type: object
      properties:
        minimum:
          type: string
          description: Minimum level
          example: '-5.1'
          format: decimal
          pattern: ^-?[0-9]{1,15}(.[0-9]{1,6}?)$
        maximum:
          type: string
          description: Maximum level
          example: '5.1'
          format: decimal
          pattern: ^-?[0-9]{1,15}(.[0-9]{1,6}?)$
      required:
      - minimum
      - maximum
    ResourcePowerDto:
      type: object
      properties:
        active:
          description: 'Active power constraints (minimum, maximum) this resource can import/export (in kW).


            Positive values indicate consumption, negative values indicate production.


            A battery would typically have a value set for both an active import and export.'
          allOf:
          - $ref: '#/components/schemas/ResourcePowerConstraints'
        reactive:
          description: 'Reactive power constraints (minimum, maximum) this resource can import/export (in kVAR).


            Positive values indicate lag, negative values indicate lead.'
          allOf:
          - $ref: '#/components/schemas/ResourcePowerConstraints'
      required:
      - active
    ProviderActivationSummaryListDto:
      type: object
      properties:
        total:
          type: integer
          description: Total amount of results that match the query
          minimum: 0
        items:
          description: Activations for the current page
          type: array
          items:
            $ref: '#/components/schemas/ProviderActivationSummaryDto'
      required:
      - total
      - items
    ConnectionPointResourcesListDto:
      type: object
      properties:
        total:
          type: integer
          description: Total amount of results that match the query
          minimum: 0
        items:
          description: Paginated items
          type: array
          items:
            $ref: '#/components/schemas/ResourceDto'
      required:
      - total
      - items
    ResourceWebhooksDto:
      type: object
      properties:
        accepted:
          type: string
          description: 'Webhook at which you''d like to receive a notification of acceptance for bids made for this resource. For more information on the webhook content, see [the specifications](#tag/accepting_bids/operation/WebhookBidAccepted).


            This is optional, and if not provided, activation via MQTT will be used instead. For more information on other notification options, see [this guide](/guides/connect/activating-flexibility/activating).'
          example: https://domain.tld/path
          format: uri
    ForbiddenExceptionDto:
      type: object
      properties:
        message:
          description: One or more specific error messages
          oneOf:
          - type: string
          - type: array
            items:
              type: string
          example: Insufficient permissions
        error:
          type: string
          description: Forbidden
          example: Forbidden
        status_code:
          type: number
          description: '403'
          example: 403
      required:
      - message
      - error
      - status_code
    EnergyDto:
      type: object
      properties:
        delivered:
          type: string
          description: 'The actual energy delivered by the resource, in `kWh` or `kVARh`, verified by real-time metering.

            It can be negative if, for example, a resources increases its consumption when a decrease was requested.


            This is only available after the activation has been verified, which happens a few minutes after the activation''s time window.'
          format: decimal
          example: '5.1'
          pattern: ^-?[0-9]{1,15}(.[0-9]{1,6}?)$
          nullable: true
        requested:
          type: string
          description: The energy requested by the activation, in `kWh` or `kVARh`, based on an initial estimate of available flexibility.
          format: decimal
          example: '5.1'
          pattern: ^-?[0-9]{1,15}(.[0-9]{1,6}?)$
        extra_delivered:
          type: string
          description: Extra energy delivered beyond the requested amount for procurements without a delivery limit (in `kWh` or `kVARh`). `null` before verification or for procurements with a fixed delivery limit (where overdelivery is not tracked).
          format: decimal
          example: '1.2'
          pattern: ^-?[0-9]{1,15}(.[0-9]{1,6}?)$
          nullable: true
      required:
      - delivered
      - requested
      - extra_delivered
    NotFoundDto_UmVzb3VyY2UgZG9lcyBub3QgZXhpc3Q:
      type: object
      properties:
        message:
          description: One or more specific error messages
          oneOf:
          - type: string
          - type: array
            items:
              type: string
          example: Resource does not exist
        error:
          type: string
          description: Not Found
          example: Not Found
        status_code:
          type: number
          description: '404'
          example: 404
      required:
      - message
      - error
      - status_code
    ProviderActivationSummaryDto:
      type: object
      properties:
        start:
          type: string
          description: The start time of the activation (ISO 8601).
          format: date-time
          example: '2024-03-15T10:30:00Z'
        end:
          type: string
          description: The end time of the activation (ISO 8601).
          format: date-time
          example: '2024-03-15T10:30:00Z'
        value:
          type: string
          description: The value of the activation, in `kW` or `kVAR`.
          format: decimal
          example: '5.1'
          pattern: ^-?[0-9]{1,15}(.[0-9]{1,6}?)$
        energy:
          description: The energy of the activation
          allOf:
          - $ref: '#/components/schemas/EnergyDto'
        direction:
          type: string
          description: The direction of the activation.
          enum:
          - upward
          - downward
          example: upward
        resource_id:
          type: string
          description: The ID of the resource for this activation.
 

# --- truncated at 32 KB (38 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/powernaut/refs/heads/main/openapi/powernaut-resources-api-openapi.yml