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

# Calculate offer price

> Calculate an offer price for a given tariff

With this API endpoint, you can calculate a personalized price offer for a prospect. You need to provide a `tariffKey` and the prospect's postcode and yearly energy consumption as minimum input for the calculation.

You can retrieve the available tariffs using the [list tariffs](/api-reference/tariffs/list_tariffs) endpoint.

<Info>
  The prices returned by this API endpoint include VAT
</Info>


## OpenAPI

````yaml POST /partner/v1/tariffs/{tariffKey}/calculation
openapi: 3.0.4
info:
  title: RABOT Partner API
  description: "## Introduction\r\n\r\nThe RABOT Partner API allows you to integrate with the RABOT platform to automate your process flows. It is designed for backend, server-to-server integration supporting the following use cases\r\n\r\n* Getting price quotes and managing customer orders (submit, check status) for Sales Partners\r\n\r\n* Accessing customer, contract and pricing / consumption data for integrating into 3rd party applications\r\n\r\n* Price dependent optimization of customer assets and energy consumption\r\n\r\n\r\n## Access to the API\r\n\r\n### Partner setup\r\n\r\nTo use the API, your organization has to be set up as a partner in the RABOT platform. As part of this setup process, you receive a set of **client credentials** (client id, client password) that allow you to perform requests against the API. The client credentials also define the level of access you have, depending on the agreed use case and commercial and legal agreement in place.\r\n\r\n> \r\n> Make sure to always keep your client credentials safe. Do not include client credentials in client side code (smartphone app, web application), as they could easily be extracted and misused. If you think your credentials have been compromised, contact RABOT to invalidate the credentials and get a new password.\r\n>\r\n\r\nFor development and testing purposes, the API is also available in a test environment, where you can create and modify data without triggering actual contract and grid operation processes. To access the test enviroment, you have to use different hostnames for your API request. Note that also your client credentials a different between test environment and production enviroment.\r\n\r\n| API | Test environment | Production environment |\r\n| ---------------- | --------------------------------- | ------------------------------ |\r\n| Authentication server | `test-auth.rabot-charge.de` | `auth.rabot-charge.de` |\r\n| API server | `test-api.rabot-charge.de` | `api.rabot-charge.de` |\r\n\r\n### Authentication\r\n\r\nThe RABOT Partner API uses OAuth 2.0 for authentication (see [RFC 7649](https://www.rfc-editor.org/rfc/rfc6749)). Using the OAuth client credentials flow, you can obtain an access token from the RABOT authentication server.\r\n\r\n#### Token request\r\n\r\n```shell\r\ncurl -L \"auth.rabot-charge.de/connect/token\" \\\r\n-H \"Content-Type: application/x-www-form-urlencoded\" \\\r\n-d \"client_id={{CLIENT_ID}}\" \\\r\n-d \"client_secret={{CLIENT_SECRET}}\" \\\r\n-d \"grant_type=client_credentials\" \\\r\n-d \"scope=api:partner\"\r\n```\r\n\r\nYou need to specify, which scopes you want to include in the token by specifying them in `scope` parameter.\r\n\r\nFollowing scopes are available:\r\n\r\n| Scope            | Description                                                     |\r\n| ---------------- | --------------------------------------------------------------- |\r\n| `api:partner`    | permission to access Partner API, required for all API requests |\r\n| `create:orders`  | permission to create orders                                     | \r\n\r\n\r\n> To use scopes, you need to have them assigned to your API client by RABOT administrators.\r\n> If you feel you should have a scope, that you don't have, please contact our B2B support team.\r\n\r\n#### Token response\r\n\r\nIf successful, the authentication server responds with a HTTP/200 status code, and the response body contains a structure with the access token\r\n\r\n```json\r\n{\r\n  \"access_token\": \"eyJhbGciOiJS....QnkY36d_ac\",\r\n  \"token_type\": \"Bearer\",\r\n  \"expires_in\": 3599\r\n}\r\n```\r\n\r\nIn all requests to the partner API, include the access token as Bearer token in the HTTP authorization header. Note that the token only has a limited life time; when the life time has expired, you will need to request a new token from the authentication server.\r\n\r\n#### Example request\r\n\r\n```shell\r\ncurl -L \"https://api.rabot-charge.de/partners/v1/tariffs\" \\\r\n-H \"Authorization: Bearer eyJhbGciOiJS....QnkY36d_ac\"\r\n```\r\n\r\n\r\n## Managing orders via the API\r\n\r\nAs a RABOT sales partner, the API allows you to build your own custom sales funnel for RABOT products (energy tariffs) or to integrate the price quote and order process into your own systems.\r\n\r\nNote that to build a sales process for RABOT energy tariffs that is compliant to the regulations, many requirements have to be fulfilled that are not part of this documentation. This documentation only covers the technical integration.\r\n\r\n### Creating a price quote\r\n\r\nTo create a price quote for a prospect customer, you need to select a tariff, and provide some basic information about the prospect, such as:\r\n\r\n* postcode of the delivery address\r\n* expected yearly energy consumption\r\n\r\nWith this information, you can call the tariff calculation endpoint `POST /partner/v1/tariffs/{tariffkey}/calculation`\r\n\r\nThis endpoint returns a response that details the different pricing components both on a monthly base and depending on the consumption, as well as the contract conditions (minimum duration, cancellation period).\r\n\r\n### Submitting an order\r\n\r\nWhen a customer has accepted the offer, you can use the API to submit the customer and order details to the RABOT platform with a `POST /partner/v1/orders` call\r\n\r\nFor the order, you have to provide the following information (see API reference for all the details):\r\n\r\n* a `tariffKey` to identify the requested product\r\n* customer identification, contact details and initial password.\r\n* delivery address and meter identification\r\n* information about previous supplier, desired change date and expected yearly consumption\r\n* bank details (for SEPA mandate)\r\n\r\nIf successful, the API returns a customer number and contract number, which uniquely identify the customer and order in the RABOT platform, and can be used in subsequent API calls, e.g. to check the status of the order processing\r\n\r\nBefore submitting the order via the API, you need to ensure that customers have received all the required contract and pricing information, have accepted the terms and conditions (AGB), have confirmed the email address and have accepted the offer.\r\n\r\nOnce the order is received by the RABOT platform, an order confirmation email will be sent out to the email address provided in the order.\r\n\r\n#### Managing user password\r\n\r\nIf the customer email address submitted with the order does not exist in the RABOT platform yet, a new user account is automatically created. If you provide a user password in the API call, this password will be used, and the customer will be able to log into RABOT user interfaces (web portal or mobile app) using email address and password.\r\n\r\nIf no password is provided in the API call, the user account will be created with a random password, and the customer would need to go through a \"forget password\" flow to chose a new password.\r\n\r\n### Checking order status\r\n\r\nAfter the order has been submitted successfully, you can use the `GET /partner/v1/orders` API endpoint to follow the different processing states of the order.\r\n\r\nAn order can have one of the following states:\r\n\r\n| Order status    | Description                                                  |\r\n| --------------- | ------------------------------------------------------------ |\r\n| Open            | The order has been received, but is not being processed yet if required data is missing (e.g. missing meter number) |\r\n| Processing      | The order is being processed, communication with other market actors (grid operators, previous supplier) is ongoing. This can take a few days up to a couple of weeks depending on the actors involved |\r\n| Rejected        | The order has been denied, e.g. due to a negative credit check |\r\n| Revoked         | The customer has revoked the order                           |\r\n| PendingDelivery | The order has been processed, and a contract confirmation has been sent to the customer, including a date for start of delivery |\r\n| Delivery        | The supply contract is active and RABOT is delivering energy to the delivery location |\r\n| Cancelled       | A contract termination has been received and an end of delivery date has been set. This could either be due to a customer actively sending a termination request, or because a customer has chosen a new supplier, and the supplier has communicated the termination request via the market communication processes. |\r\n| Unspecified     | An unknown order state, indicating an error in the communcation with other market actors |\r\n\r\n## Customers and contracts\r\n\r\nThe Partner API can provide access to customer and contract data. Depending on the partnership scope and agreed data privacy policies, the level of access can vary, and you might need to use the customer linking process to allow end users to grant you access to their data.\r\n\r\n### Customer linking process\r\nAn end user can grant your application access to their data by an approval process similar to the OAuth access flow. This involves the following steps:\r\n\r\n* call `POST /partner/v1/customers/link` to receive an `authorizationUrl` link. \r\n* send the user to this link in a Web view. \r\n* The user will be asked to log in using the credentials they used when creating their energy supply contract. \r\n* After login, the user will be asked to grant your application access to their personal and contract related data stored on the Rabot platform.\r\n* When the user approves, the web view will be redirected to the webpage defined by the `successUrl` parameter in the `POST /partner/v1/customers/link` call, and you will be able to access the users data via the API.\r\n\r\n> Note that the link returned by the API only has a limited validity of 10 minutes. If an end user tries to login using the link after the 10 minutes have expired, the login will fail, and you will have to create a new link again to re-start the process.\r\n\r\n#### Managing user reference Ids\r\nThe API offers different ways for you to match customer data in the RABOT platform with the data in your own platform.\r\n\r\n1. You can add a parameter `externalId` to the `POST /partner/v1/customers/link` call. This information is then stored with the customer data in the RABOT platform, and returned as part of the customer data in the `GET /partner/v1/customers` endpoint.\r\n\r\n2. In addition, when the user is redirected after granting your application access to their data, the `successUrl` link is extended with a query parameter `customerNo` that will contain the unique customer number of this customer in the RABOT platform. \r\n\r\n### Contract information\r\nVia the API, you can also get access to data about the indidvidual contracts of a customer. Note that a single customer can have multiple contracts.\r\n\r\nEvery contract initially starts as an order, received either via the web funnel or the API (see [Managing orders](#managing-orders-via-the-api)). Only after the order has been confirmed, and an order confirmation has been sent out to the user, is the order changed to a contract, and visible via the respective endpoint in the API.\r\n\r\n## Contract metrics\r\nThe contract metrics endpoint provides access to pricing and consumption information related to a specific contract. This can be actual recorded data (e.g. consumption values as reported by a Smart Meter) or forecasted data (e.g. consumption data for SLP customers, or day-ahead price energy pricing).\r\n\r\n### MetricType\r\nYou can select the type of information that you want to retrieve by specifying the appropriate `MetricType`:\r\n\r\n| MetricType | Description |\r\n| ---- | --- |\r\n| `Consumption` | The energy consumed during the selected period (in kWh). Can be either measured or estimated. |\r\n| `WorkingPrice` | The estimated average working price (EUR/kWh) in the selected period, including all fees and taxes.|\r\n| `TotalCost` | The total energy cost in the selected period, including all fees and taxes. If the selected period is smaller than a month, the applicable monthly fees will be pro-rated to the period.|\r\n| `Saving` | The monetary savings (in EUR) in the selected period, compared to the local default supplier's tariff pricing.|\r\n| `Co2Saving` | The savings in carbon emissions, commpared to the german energy grid mix.|\r\n\r\n> Note that for `WorkingPrice` and `TotalCost` metrics, the values returned by this API endpoint might not match the amounts reflected on the customers invoice.   \r\n> This is due to the fact that some price conditions or discounts are only calculated on a monthly level. For example a working price cap is only applied when creating the monthly invoice, so the API might return a higher monthly average working price than what is shown on the invoice.\r\n\r\n### ValueType\r\n\r\nYou can use the `ValueType` request parameter to define if you want to only receive recorded data or forecasted data, or both:\r\n\r\n| ValueType | Description |\r\n| - | - |\r\n| `Actual` | return only data based on measurements, e.g. energy consumption reported by the DSO |\r\n| `Forecast` | return only data based on estimations, e.g. consumption estimated based on standard load profiles (SLP), not confirmed by actual meter reading yet | \r\n| `Dynamic` | return either actual or forecasted data for the whole period, but not mixed | \r\n| `Combined` | return either actual or forecasted data. E.g. when querying data for a month on daily level, for some days the API might returned actual data, while for other days might return forecasted data, based on data availability |\r\n\r\n### Periods and Intervals\r\n\r\nThe API allows to retrieve data in different granularity, from to 15 minute intervals, up to aggregation on monthly or yearly level. Use the `interval` parameter to select the aggregation level.\r\nTo limit the size of the result set, depening on the selected `interval`, you can only query a limited time period:\r\n\r\n| interval | maximum period |\r\n| - | - |\r\n| `QuarteryHourly` | 1 day |\r\n| `Hourly` | 3 days |\r\n| `Daily` | 2 months |\r\n| `Weekly` | 1 year |\r\n| `Monthly` | 15 years |\r\n| `Yearly` | 50 years |\r\n\r\nIf you try to request a longer period, the API will return an `HTTP 400` error.\r\n\r\n### Example - 15-min consumption for Smart Meter \r\n\r\nFor contracts that are linked to a Smart Meter, the RABOT platform typically receives the measured consumption values in 15 minutes intervals on the following day. You can use the API to retrieve this information e.g. to display a detailed consumption graph the the user.\r\n\r\nRequest:\r\n```shell\r\ncurl -L \"https://api.rabot-charge.de/partner/v1/customers/87678631/contracts/26765215/metrics?period.from=2025-03-01&period.to=2025-03-02&interval=QuarterHourly&metricType=Consumption&valueType=Actual\" \\\r\n-H \"Authorization: ••••••\"\r\n```\r\n\r\nResponse:\r\n```json\r\n{\r\n    \"data\": {\r\n        \"valueUnitInfo\": \"in kWh\",\r\n        \"consideredDataPeriod\": {\r\n            \"from\": \"2025-03-01 00:00:00\",\r\n            \"to\": \"2025-03-02 00:00:00\"\r\n        },\r\n        \"metricType\": \"Consumption\",\r\n        \"valueType\": \"Actual\",\r\n        \"interval\": \"QuarterHourly\",\r\n        \"intervalDuration\": 96.0000,\r\n        \"averageValuePerInterval\": 0.6148,\r\n        \"totalValue\": 59.0165,\r\n        \"numberOfEntries\": 96,\r\n        \"records\": [\r\n            {\r\n                \"moment\": \"2025-03-01 00:00:00\",\r\n                \"value\": 0.3619,\r\n                \"valueRelevanceType\": \"Actual\"\r\n            },\r\n            {\r\n                \"moment\": \"2025-03-01 00:15:00\",\r\n                \"value\": 0.3486,\r\n                \"valueRelevanceType\": \"Actual\"\r\n            },\r\n            {\r\n                \"moment\": \"2025-03-01 00:30:00\",\r\n                \"value\": 0.3369,\r\n                \"valueRelevanceType\": \"Actual\"\r\n            },\r\n...\r\n            {\r\n                \"moment\": \"2025-03-01 23:30:00\",\r\n                \"value\": 0.5152,\r\n                \"valueRelevanceType\": \"Actual\"\r\n            },\r\n            {\r\n                \"moment\": \"2025-03-01 23:45:00\",\r\n                \"value\": 0.4810,\r\n                \"valueRelevanceType\": \"Actual\"\r\n            }\r\n        ]\r\n    },\r\n    \"isSuccess\": true,\r\n    \"message\": null,\r\n    \"error\": null\r\n}\r\n```\r\n\r\n### Example - Daily energy cost\r\n\r\nYou can easily retrieve the daily energy cost for any contract using the metrics API endpoint:\r\n\r\nRequest:\r\n```shell\r\ncurl -L \"https://api.rabot-charge.de/partner/v1/customers/87678631/contracts/26765215/metrics?period.from=2025-03-01&period.to=2025-04-01&interval=Daily&metricType=TotalCost&valueType=Combined\" \\\r\n-H \"Authorization: ••••••\" \r\n``` \r\n\r\nResponse:\r\n```json\r\n{\r\n    \"data\": {\r\n        \"valueUnitInfo\": \"in Euro\",\r\n        \"consideredDataPeriod\": {\r\n            \"from\": \"2025-03-01 00:00:00\",\r\n            \"to\": \"2025-04-01 00:00:00\"\r\n        },\r\n        \"metricType\": \"TotalCost\",\r\n        \"valueType\": \"Combined\",\r\n        \"interval\": \"Daily\",\r\n        \"intervalDuration\": 30.9583,\r\n        \"averageValuePerInterval\": 16.8718,\r\n        \"totalValue\": 522.3232,\r\n        \"numberOfEntries\": 31,\r\n        \"records\": [\r\n            {\r\n                \"moment\": \"2025-03-01 00:00:00\",\r\n                \"value\": 22.5213,\r\n                \"valueRelevanceType\": \"Actual\"\r\n            },\r\n            {\r\n                \"moment\": \"2025-03-02 00:00:00\",\r\n                \"value\": 18.2885,\r\n                \"valueRelevanceType\": \"Actual\"\r\n            },\r\n...\r\n            {\r\n                \"moment\": \"2025-03-30 00:00:00\",\r\n                \"value\": 6.6829,\r\n                \"valueRelevanceType\": \"Forecast\"\r\n            },\r\n            {\r\n                \"moment\": \"2025-03-31 00:00:00\",\r\n                \"value\": 9.8037,\r\n                \"valueRelevanceType\": \"Forecast\"\r\n            }\r\n        ]\r\n    },\r\n    \"isSuccess\": true,\r\n    \"message\": null,\r\n    \"error\": null\r\n}\r\n```\r\n\r\n### Example - Day-Ahead pricing\r\n\r\nThe metrics endpoint can also be used to get the future energy cost based on the Day Ahead market prices, and including all other fixed and variable fees and taxes. \r\n\r\nRequest:\r\n```shell\r\ncurl -L \"https://api.rabot-charge.de/partner/v1/customers/87678631/contracts/26765215/metrics?period.from=2025-05-05&period.to=2025-05-06&interval=Hourly&metricType=WorkingPrice&valueType=Combined\" \\\r\n-H \"Authorization: ••••••\"\r\n```\r\n\r\nResponse\r\n```json\r\n{\r\n    \"data\": {\r\n        \"valueUnitInfo\": \"in Cent/kWh\",\r\n        \"consideredDataPeriod\": {\r\n            \"from\": \"2025-05-05 00:00:00\",\r\n            \"to\": \"2025-05-06 00:00:00\"\r\n        },\r\n        \"metricType\": \"WorkingPrice\",\r\n        \"valueType\": \"Combined\",\r\n        \"interval\": \"Hourly\",\r\n        \"intervalDuration\": 24.0000,\r\n        \"averageValuePerInterval\": 32.5362,\r\n        \"totalValue\": 780.8697,\r\n        \"numberOfEntries\": 24,\r\n        \"records\": [\r\n            {\r\n                \"moment\": \"2025-05-05 00:00:00\",\r\n                \"value\": 31.0816,\r\n                \"valueRelevanceType\": \"Forecast\"\r\n            },\r\n            {\r\n                \"moment\": \"2025-05-05 01:00:00\",\r\n                \"value\": 30.5259,\r\n                \"valueRelevanceType\": \"Forecast\"\r\n            },\r\n            {\r\n                \"moment\": \"2025-05-05 02:00:00\",\r\n                \"value\": 30.7329,\r\n                \"valueRelevanceType\": \"Forecast\"\r\n            },\r\n            {\r\n                \"moment\": \"2025-05-05 03:00:00\",\r\n                \"value\": 31.0780,\r\n                \"valueRelevanceType\": \"Forecast\"\r\n            },\r\n...\r\n            {\r\n                \"moment\": \"2025-05-05 22:00:00\",\r\n                \"value\": 34.2161,\r\n                \"valueRelevanceType\": \"Forecast\"\r\n            },\r\n            {\r\n                \"moment\": \"2025-05-05 23:00:00\",\r\n                \"value\": 33.3759,\r\n                \"valueRelevanceType\": \"Forecast\"\r\n            }\r\n        ]\r\n    },\r\n    \"isSuccess\": true,\r\n    \"message\": null,\r\n    \"error\": null\r\n}\r\n```\r\n\r\n"
  version: v1
servers: []
security: []
tags:
  - name: Customer
    description: Controller implementing RESTful API to manage customers.
  - name: DayAheadPrices
    description: Provides a RESTful API to perform day-ahead-prices-related operations.
  - name: Order
    description: Provides a RESTful API to perform order-related operations.
  - name: Tariff
    description: Provides a RESTful API to perform tariff-related operations.
paths:
  /partner/v1/tariffs/{tariffKey}/calculation:
    post:
      tags:
        - Tariff
      summary: Create estimated cost calculation
      parameters:
        - name: tariffKey
          in: path
          description: Key of the tariff to calculate
          required: true
          schema:
            type: string
      requestBody:
        description: Request data object
        content:
          application/json:
            schema:
              allOf:
                - $ref: '#/components/schemas/TariffCalculationRequestDto'
              description: Data object for a tariff calculation request.
          text/json:
            schema:
              allOf:
                - $ref: '#/components/schemas/TariffCalculationRequestDto'
              description: Data object for a tariff calculation request.
          application/*+json:
            schema:
              allOf:
                - $ref: '#/components/schemas/TariffCalculationRequestDto'
              description: Data object for a tariff calculation request.
      responses:
        '200':
          description: OK
          content:
            text/plain:
              schema:
                $ref: >-
                  #/components/schemas/ApiResponseDto-TariffCalculationResponseDto
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/ApiResponseDto-TariffCalculationResponseDto
            text/json:
              schema:
                $ref: >-
                  #/components/schemas/ApiResponseDto-TariffCalculationResponseDto
components:
  schemas:
    TariffCalculationRequestDto:
      type: object
      properties:
        yearlyConsumptionKwh:
          type: number
          description: Yearly consumption in kWh.
          format: double
        zipCode:
          type: string
          description: ZIP code of the household, 5 digits without spaces.
        hasSmartMeter:
          type: boolean
          description: >-
            Whether the household energy consumption is metered by a smart
            meter.
        hasElectricVehicle:
          type: boolean
          description: Whether there is an electric vehicle (charger) in the household.
        campaignCode:
          type: string
          description: Campaign used by the customer, if existing
          nullable: true
          example: rabot.home.2024
      additionalProperties: false
      description: Data object for a tariff calculation request.
    ApiResponseDto-TariffCalculationResponseDto:
      type: object
      properties:
        isSuccess:
          type: boolean
          description: Success status of the operation based on status code (2xx range).
          readOnly: true
          example: true
        message:
          type: string
          description: >-
            Optional message to provide additional information about the
            operation result.
          nullable: true
          example: null
        error:
          type: array
          items:
            $ref: '#/components/schemas/ApiErrorDto'
          description: Optional error details in case of an error(s).
          nullable: true
        refUri:
          type: string
          description: Optional reference URI to point to the resulting resource.
          format: uri
          nullable: true
          readOnly: true
        data:
          allOf:
            - $ref: '#/components/schemas/TariffCalculationResponseDto'
          description: Returned data instance.
          nullable: true
      additionalProperties: false
      description: API response DTO with data.
    ApiErrorDto:
      type: object
      properties:
        severity:
          allOf:
            - $ref: '#/components/schemas/ApiErrorSeverities'
          description: Severity of the error.
          example: Error
        code:
          type: string
          description: Internal error code for client processing.
          example: validation-failed
        message:
          type: string
          description: Error message.
          example: First name is required for non-business customers.
        details:
          type: string
          description: Additional details about the error.
          nullable: true
          example: null
      additionalProperties: false
      description: API Error response DTO.
    TariffCalculationResponseDto:
      required:
        - displayName
        - durationPeriod
        - name
        - noticePeriod
        - priceComponents
        - vat
      type: object
      properties:
        name:
          type: string
          description: Name of the calculated tariff
          example: rabot.smart
        displayName:
          type: string
          description: Display name of tariff, or the same as name, if none was specified.
          example: rabot.smart 24 private
        vat:
          allOf:
            - $ref: '#/components/schemas/UnitValueDto-Int32'
          description: VAT percentage applied to the tariff.
          example: 19
        priceComponents:
          allOf:
            - $ref: '#/components/schemas/TariffPriceComponentsDto'
          description: Components of the price.
        durationPeriod:
          allOf:
            - $ref: '#/components/schemas/IntegerUnitValueDto'
          description: Duration period of the tariff.
        noticePeriod:
          allOf:
            - $ref: '#/components/schemas/IntegerUnitValueDto'
          description: Notice period of the tariff.
        features:
          type: array
          items:
            type: string
          description: Features of the tariff.
          nullable: true
        yearlySavingsDetails:
          allOf:
            - $ref: '#/components/schemas/YearlySavingsDetailsDto'
          description: >-
            Information about yearly savings, compared to the local default
            supplier (Grundversorger)
          nullable: true
      additionalProperties: false
      description: Response containing the calculated tariff details.
    ApiErrorSeverities:
      enum:
        - Error
        - Warning
        - Notice
      type: string
      description: >-
        Enumerates the severity of an API
        error.<p>Members:</p><ul><li><i>Error</i> - Error; a critical error
        information.</li> <li><i>Warning</i> - Warning; an incorrect behavior
        information.</li> <li><i>Notice</i> - Notice; a non-standard behavior
        information.</li> </ul>
    UnitValueDto-Int32:
      type: object
      properties:
        value:
          type: integer
          description: Value of the unit.
          format: int32
        unit:
          allOf:
            - $ref: '#/components/schemas/UnitDto'
          description: Unit of the value.
        unitText:
          type: string
          description: Textual representation of the unit in German.
      additionalProperties: false
      description: Specifies a measurable value with a unit.
    TariffPriceComponentsDto:
      required:
        - basePriceDetail
        - basePricePerMonth
        - baseServiceFee
        - effectiveWorkPrice
        - estimatedConsumption
        - estimatedWorkPrice
        - expectedWorkPrice
        - pricePerMonth
        - unitPrice
        - variableServiceFee
        - workPriceDetails
      type: object
      properties:
        pricePerMonth:
          allOf:
            - $ref: '#/components/schemas/DecimalUnitValueDto'
          description: >-
            Total average cost per month, based on the given yearly consumption.
            Includes VAT
        unitPrice:
          allOf:
            - $ref: '#/components/schemas/DecimalUnitValueDto'
          description: >-
            Unit price per kWh. This includes the price of energy, all fees and
            taxes, and a service fee
        basePricePerMonth:
          allOf:
            - $ref: '#/components/schemas/DecimalUnitValueDto'
          description: >-
            Base price of the tariff, including monthly grid fees, metering fees
            and a service fee
        estimatedConsumption:
          allOf:
            - $ref: '#/components/schemas/DecimalUnitValueDto'
          description: Estimated consumption per month
        estimatedWorkPrice:
          allOf:
            - $ref: '#/components/schemas/DecimalUnitValueDto'
          description: Estimated work price
        expectedWorkPrice:
          allOf:
            - $ref: '#/components/schemas/DecimalUnitValueDto'
          description: Expected work price per month
        effectiveWorkPrice:
          allOf:
            - $ref: '#/components/schemas/DecimalUnitValueDto'
          description: Effective work price.
        baseServiceFee:
          allOf:
            - $ref: '#/components/schemas/DecimalUnitValueDto'
          description: Base service fee, per month
        variableServiceFee:
          allOf:
            - $ref: '#/components/schemas/DecimalUnitValueDto'
          description: Service fee per kWh
        basePriceDetail:
          allOf:
            - $ref: '#/components/schemas/BasePriceDetailsDto'
          description: Details about the base price components
        workPriceDetails:
          allOf:
            - $ref: '#/components/schemas/WorkPriceDetailsDto'
          description: Details about the work price components
        rabotShare:
          allOf:
            - $ref: '#/components/schemas/RabotShareDetailsDto'
          description: RABOT share details, in the tariff is based on a savings share model
          nullable: true
        comparisonTariff:
          allOf:
            - $ref: '#/components/schemas/ComparisonTariffDetailsDto'
          description: >-
            Information about the price conditions of the local default supplier
            (Grundversorger)
          nullable: true
      additionalProperties: false
      description: Price components of a tariff.
    IntegerUnitValueDto:
      type: object
      properties:
        value:
          type: integer
          description: Value of the unit.
          format: int32
        unit:
          allOf:
            - $ref: '#/components/schemas/UnitDto'
          description: Unit of the value.
        unitText:
          type: string
          description: Textual representation of the unit in German.
      additionalProperties: false
      description: Specifies a measurable value with a unit of type integer.
    YearlySavingsDetailsDto:
      required:
        - co2
        - price
      type: object
      properties:
        price:
          type: number
          description: Cost savings per year
          format: double
          example: 180.5
        co2:
          type: integer
          description: Savings in CO2 emissions in kg, based on the default energy grid mix
          format: int32
      additionalProperties: false
      description: >-
        Information about yearly savings, compared to the local default supplier
        (Grundversorger)
    UnitDto:
      type: object
      properties:
        main:
          allOf:
            - $ref: '#/components/schemas/Units'
          description: Main unit.
        per:
          allOf:
            - $ref: '#/components/schemas/Units'
          description: Per unit in form of main/per or NULL if none.
          nullable: true
      additionalProperties: false
      description: >-
        Represents a unit of measurement, optionally expressed as a ratio (e.g.,
        ct/kWh).
    DecimalUnitValueDto:
      type: object
      properties:
        value:
          type: number
          description: Value of the unit.
          format: double
        unit:
          allOf:
            - $ref: '#/components/schemas/UnitDto'
          description: Unit of the value.
        unitText:
          type: string
          description: Textual representation of the unit in German.
      additionalProperties: false
      description: Specifies a measurable value with a unit of type decimal.
    BasePriceDetailsDto:
      required:
        - fees
      type: object
      properties:
        fees:
          allOf:
            - $ref: '#/components/schemas/BasePriceFeesDto'
          description: Fees breakdown
      additionalProperties: false
      description: Details about the base price components of a tariff.
    WorkPriceDetailsDto:
      required:
        - averageExchangePrice
        - fees
        - serviceFee
      type: object
      properties:
        serviceFee:
          allOf:
            - $ref: '#/components/schemas/DecimalUnitValueDto'
          description: Service fee component of the work price.
        averageExchangePrice:
          allOf:
            - $ref: '#/components/schemas/DecimalUnitValueDto'
          description: Average exchange price component.
        fees:
          allOf:
            - $ref: '#/components/schemas/WorkPriceFeesDto'
          description: Fees breakdown
      additionalProperties: false
      description: Details about the work price components of a tariff.
    RabotShareDetailsDto:
      required:
        - rabotShare
        - rabotSharePercentage
        - rabotShareUnit
        - totalPriceWithoutRabotShare
      type: object
      properties:
        rabotShare:
          allOf:
            - $ref: '#/components/schemas/DecimalUnitValueDto'
          description: Rabot share
          nullable: true
        rabotShareUnit:
          allOf:
            - $ref: '#/components/schemas/DecimalUnitValueDto'
          description: Rabot share per unit of work (e.g., per kWh)
          nullable: true
        rabotSharePercentage:
          allOf:
            - $ref: '#/components/schemas/DecimalUnitValueDto'
          description: Rabot share as percentage value
        totalPriceWithoutRabotShare:
          allOf:
            - $ref: '#/components/schemas/DecimalUnitValueDto'
          description: Total price without RABOT share
      additionalProperties: false
      description: Information about the RABOT share.
    ComparisonTariffDetailsDto:
      required:
        - basePrice
        - totalPrice
        - workingPrice
      type: object
      properties:
        workingPrice:
          allOf:
            - $ref: '#/components/schemas/DecimalUnitValueDto'
          description: Working price of the comparison tariff
          nullable: true
        basePrice:
          allOf:
            - $ref: '#/components/schemas/DecimalUnitValueDto'
          description: Base price of the comparison tariff
          nullable: true
        totalPrice:
          allOf:
            - $ref: '#/components/schemas/DecimalUnitValueDto'
          description: Total price of the comparison tariff
          nullable: true
      additionalProperties: false
      description: Details about a comparison tariff
    Units:
      enum:
        - None
        - Kwh
        - Kw
        - Euro
        - Cent
        - Percent
        - Year
        - Month
        - Day
        - Hour
        - Minute
      type: string
      description: >-
        Defines the available units of
        measurement.<p>Members:</p><ul><li><i>None</i> - No unit.</li>
        <li><i>Kwh</i> - Kilowatt-hours.</li> <li><i>Kw</i> - Kilowatts.</li>
        <li><i>Euro</i> - Euros.</li> <li><i>Cent</i> - Euro cents.</li>
        <li><i>Percent</i> - Percent.</li> <li><i>Year</i> - Year.</li>
        <li><i>Month</i> - Month.</li> <li><i>Day</i> - Day.</li>
        <li><i>Hour</i> - Hour.</li> <li><i>Minute</i> - Minute.</li> </ul>
    BasePriceFeesDto:
      required:
        - gridFee
        - meteringFee
      type: object
      properties:
        gridFee:
          allOf:
            - $ref: '#/components/schemas/DecimalUnitValueDto'
          description: Grid fee component of the base price.
        meteringFee:
          allOf:
            - $ref: '#/components/schemas/DecimalUnitValueDto'
          description: Metering fee component of the base price.
        basePriceAdjustment:
          allOf:
            - $ref: '#/components/schemas/DecimalUnitValueDto'
          description: Adjustment to the base price, if applicable.
          nullable: true
      additionalProperties: false
      description: Base price fees breakdown
    WorkPriceFeesDto:
      required:
        - concessionFee
        - effectiveWorkPriceAdjustment
        - greenCertificateSurcharge
        - gridFee
        - offshoreFee
        - p19Fee
        - powerFee
        - powerHeatCouplingFee
        - workPriceAdjustment
      type: object
      properties:
        greenCertificateSurcharge:
          allOf:
            - $ref: '#/components/schemas/DecimalUnitValueDto'
          description: Surcharge for green certificates.
        powerFee:
          allOf:
            - $ref: '#/components/schemas/DecimalUnitValueDto'
          description: Power fee component.
        gridFee:
          allOf:
            - $ref: '#/components/schemas/DecimalUnitValueDto'
          description: Grid fee component of the work price.
        powerHeatCouplingFee:
          allOf:
            - $ref: '#/components/schemas/DecimalUnitValueDto'
          description: Power-heat coupling fee.
        concessionFee:
          allOf:
            - $ref: '#/components/schemas/DecimalUnitValueDto'
          description: Concession fee component.
        offshoreFee:
          allOf:
            - $ref: '#/components/schemas/DecimalUnitValueDto'
          description: Offshore fee component.
        p19Fee:
          allOf:
            - $ref: '#/components/schemas/DecimalUnitValueDto'
          description: P19 fee component.
        workPriceAdjustment:
          allOf:
            - $ref: '#/components/schemas/DecimalUnitValueDto'
          description: Adjustment to the work price, if applicable.
          nullable: true
        effectiveWorkPriceAdjustment:
          allOf:
            - $ref: '#/components/schemas/DecimalUnitValueDto'
          description: Adjustment to the effective work price, if applicable.
          nullable: true
      additionalProperties: false
      description: Work price fees breakdown

````