{
  "openapi": "3.0.4",
  "info": {
    "title": "Partner API",
    "description": "API for partner services",
    "version": "v1"
  },
  "servers": [
    {
      "url": "https://api.partner.cubee.cz",
      "description": "Partnerý API server"
    }
  ],
  "paths": {
    "/api/v1/aggregated-data/aggregated-prices": {
      "get": {
        "tags": [
          "Aggregated Data"
        ],
        "summary": "Aggregated electricity prices",
        "description": "Retrieves aggregated electricity prices between two dates with specified granularity.",
        "operationId": "Aggregated Prices",
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "description": "The start of the requested period for aggregated prices, including date and time in UTC.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "to",
            "in": "query",
            "description": "The end of the requested period for aggregated prices, including date and time in UTC.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "cubeeSNs",
            "in": "query",
            "description": "List of serial numbers of Cubee devices to filter the results.",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "granularity",
            "in": "query",
            "description": "Aggregation level. Allowed values: daily, monthly, all.",
            "required": true,
            "schema": {
              "pattern": "^(daily|monthly|all)$",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AggregatedPriceResultModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/api/auth": {
      "post": {
        "tags": [
          "Authentication"
        ],
        "summary": "Refresh JWT access token",
        "description": "Accepts a refresh token and returns a new JWT access token if the refresh token is valid.",
        "requestBody": {
          "description": "The refresh token model",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TokenModel"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TokenModel"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TokenModel"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              },
              "application/json": {
                "schema": {
                  "type": "string"
                }
              },
              "text/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "x-excluded": true
      }
    },
    "/api/v1/auth": {
      "post": {
        "tags": [
          "Authentication"
        ],
        "summary": "Refresh JWT access token",
        "description": "Accepts a refresh token and returns a new JWT access token if the refresh token is valid.",
        "requestBody": {
          "description": "The refresh token model",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TokenModelDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TokenModelDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TokenModelDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TokenResponseModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/api/v2/savings-calculator": {
      "post": {
        "tags": [
          "Calculator"
        ],
        "summary": "Savings calculator",
        "description": "Calculates savings for Basic PV, smart PV and No PV installations.",
        "operationId": "Calculate Savings",
        "requestBody": {
          "description": "Input model with all available parameters to set.",
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/SavingCalculatorRequestModel"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/SavingCalculatorRequestModel"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/SavingCalculatorRequestModel"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SavingsCalculatorResultModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SavingsCalculatorResultModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SavingsCalculatorResultModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              },
              "application/json": {
                "schema": {
                  "type": "string"
                }
              },
              "text/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              },
              "application/json": {
                "schema": {
                  "type": "string"
                }
              },
              "text/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/api/v2/savings-calculator/email": {
      "post": {
        "tags": [
          "Calculator"
        ],
        "summary": "Savings calculator",
        "description": "Calculates savings for Basic PV, smart PV and No PV installations.",
        "operationId": "Calculate Savings - Email",
        "requestBody": {
          "description": "Input model with all available parameters to set.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SavingCalculatorRequestEmailModel"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SavingCalculatorRequestEmailModel"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SavingCalculatorRequestEmailModel"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              },
              "application/json": {
                "schema": {
                  "type": "string"
                }
              },
              "text/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              },
              "application/json": {
                "schema": {
                  "type": "string"
                }
              },
              "text/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "x-excluded": true
      }
    },
    "/api/v1/savings-calculator": {
      "post": {
        "tags": [
          "CalculatorControllerV1"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SavingsCalculatorModel"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SavingsCalculatorModel"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SavingsCalculatorModel"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SavingsCalculatorResultV1Model"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SavingsCalculatorResultV1Model"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SavingsCalculatorResultV1Model"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "x-hidden": true
      }
    },
    "/api/v1/savings-calculator/test": {
      "post": {
        "tags": [
          "CalculatorControllerV1"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SavingsCalculatorModel"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SavingsCalculatorModel"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SavingsCalculatorModel"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "x-hidden": true
      }
    },
    "/api/v1/savings-calculator/tariff-commands/{distributor}": {
      "get": {
        "tags": [
          "CalculatorControllerV1"
        ],
        "parameters": [
          {
            "name": "distributor",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "x-hidden": true
      }
    },
    "/api/public/inverter-manufacturers": {
      "get": {
        "tags": [
          "Public"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ManufacturerModel"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ManufacturerModel"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ManufacturerModel"
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "x-hidden": true
      }
    },
    "/api/public/models": {
      "get": {
        "tags": [
          "Public"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/InverterModel"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/InverterModel"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/InverterModel"
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "x-hidden": true
      }
    },
    "/api/public/wallbox-manufacturers": {
      "get": {
        "tags": [
          "Public"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ManufacturerModel"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ManufacturerModel"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ManufacturerModel"
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "x-hidden": true
      }
    },
    "/api/public/wallbox-models": {
      "get": {
        "tags": [
          "Public"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WallboxModel"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WallboxModel"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WallboxModel"
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "x-hidden": true
      }
    },
    "/api/public/anonymized-household-data": {
      "get": {
        "tags": [
          "Public"
        ],
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "to",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "granularity",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AnonymizedHouseholdDataResultModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnonymizedHouseholdDataResultModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnonymizedHouseholdDataResultModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "x-hidden": true
      }
    },
    "/api/public/installation-request": {
      "post": {
        "tags": [
          "Public"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InstallationRequestModel"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/InstallationRequestModel"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/InstallationRequestModel"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/InstallationRequestResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InstallationRequestResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/InstallationRequestResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "x-hidden": true
      }
    },
    "/api/public/installation-request/{installationRequestId}": {
      "put": {
        "tags": [
          "Public"
        ],
        "parameters": [
          {
            "name": "installationRequestId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InstallationConfirmRequestModel"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/InstallationConfirmRequestModel"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/InstallationConfirmRequestModel"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "x-hidden": true
      }
    },
    "/api/public/supported-modes": {
      "get": {
        "tags": [
          "Public"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/InverterSupportedModeModel"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/InverterSupportedModeModel"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/InverterSupportedModeModel"
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "x-hidden": true
      }
    }
  },
  "components": {
    "schemas": {
      "AggregatedPricePeriodModel": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "description": "The date representing this aggregated price period.",
            "format": "date"
          },
          "totalBuyEnergyMWh": {
            "type": "number",
            "description": "Total amount of energy (in MWh) bought from the grid by all households during this period.",
            "format": "double",
            "nullable": true
          },
          "totalBuyFullPrice": {
            "type": "number",
            "description": "Total amount paid by all households combined for the energy bought, including all fees and taxes.\nCurrency is specified in the parent model.",
            "format": "double",
            "nullable": true
          },
          "totalBuyPowerPrice": {
            "type": "number",
            "description": "Total amount paid by all households combined for the energy bought, covering only the commodity energy price (\"silová elektřina\" in Czech)\nand excluding regulated parts and taxes. Currency is specified in the parent model.",
            "format": "double",
            "nullable": true
          },
          "totalSellEnergyMWh": {
            "type": "number",
            "description": "Total amount of energy (in MWh) sold to the grid by all households during this period.",
            "format": "double",
            "nullable": true
          },
          "totalSellFullPrice": {
            "type": "number",
            "description": "Total amount received by all households combined for the energy sold, including all fees and taxes.\nCurrency is specified in the parent model.",
            "format": "double",
            "nullable": true
          },
          "totalSellPowerPrice": {
            "type": "number",
            "description": "Total amount received by all households combined for the energy sold, covering only the commodity energy price (\"silová elektřina\" in Czech)\nand excluding regulated parts and taxes. Currency is specified in the parent model.",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents aggregated energy data for a given date, including the total amounts of energy bought and sold by all households,\nthe corresponding monetary values (both full and unregulated parts, known as \"silová elektřina\" in Czech)."
      },
      "AggregatedPriceResultModel": {
        "type": "object",
        "properties": {
          "from": {
            "type": "string",
            "description": "The start of the requested period for aggregated prices, including date and time in UTC.",
            "format": "date-time"
          },
          "to": {
            "type": "string",
            "description": "The end of the requested period for aggregated prices, including date and time in UTC.",
            "format": "date-time"
          },
          "periods": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AggregatedPricePeriodModel"
            },
            "description": "List of aggregated price periods within the specified date range, based on the chosen granularity (e.g., daily, monthly).",
            "nullable": true
          },
          "currency": {
            "type": "string",
            "description": "The currency in which the prices are expressed, following the ISO 4217 currency codes. Default is \"CZK\".",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "AnonymizedHouseholdDataHouseholdModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "district": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "buyAmount": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "buyFullPrice": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "buyPowerPrice": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "sellAmount": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "sellFullPrice": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "sellPowerPrice": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "planModes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PlanModeModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "AnonymizedHouseholdDataPeriodModel": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "format": "date"
          },
          "households": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AnonymizedHouseholdDataHouseholdModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "AnonymizedHouseholdDataResultModel": {
        "type": "object",
        "properties": {
          "from": {
            "type": "string",
            "format": "date-time"
          },
          "to": {
            "type": "string",
            "format": "date-time"
          },
          "periods": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AnonymizedHouseholdDataPeriodModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "CustomProductionConsumptionDataModel": {
        "type": "object",
        "properties": {
          "time": {
            "type": "string",
            "format": "date-time"
          },
          "productionWh": {
            "type": "integer",
            "format": "int32"
          },
          "consumptionWh": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "EnergyDataSet": {
        "type": "object",
        "properties": {
          "energyProducedKWh": {
            "type": "number",
            "format": "double"
          },
          "energyConsumedKWh": {
            "type": "number",
            "format": "double"
          },
          "energyPurchasedKWh": {
            "type": "number",
            "format": "double"
          },
          "energySoldKWh": {
            "type": "number",
            "format": "double"
          },
          "costOfPurchasedEnergy": {
            "type": "number",
            "format": "double"
          },
          "revenueFromSoldEnergy": {
            "type": "number",
            "format": "double"
          },
          "netEnergyCost": {
            "type": "number",
            "format": "double",
            "readOnly": true
          },
          "averagePurchasePricePerMWh": {
            "type": "number",
            "format": "double",
            "readOnly": true
          },
          "averageSellPricePerMWh": {
            "type": "number",
            "format": "double",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "FixBuyingSettings": {
        "title": "FixBuyingSettings",
        "required": [
          "buyingType",
          "monthlyFeeCzk"
        ],
        "allOf": [
          {
            "required": [
              "fixedBuyPriceCzkPerMWh"
            ],
            "type": "object",
            "properties": {
              "fixedBuyPriceCzkPerMWh": {
                "type": "number",
                "format": "double"
              },
              "fixedBuyPriceCzkPerMwhInLowTariff": {
                "type": "number",
                "format": "double"
              }
            },
            "additionalProperties": false
          }
        ],
        "properties": {
          "buyingType": {
            "minLength": 1,
            "required": [
              "FIX",
              "SPOT"
            ],
            "type": "string"
          },
          "monthlyFeeCzk": {
            "type": "number",
            "format": "double"
          },
          "vat": {
            "type": "number",
            "format": "double",
            "nullable": true
          }
        }
      },
      "FixSellingSettings": {
        "title": "FixSellingSettings",
        "required": [
          "monthlyFeeCzk",
          "sellingType"
        ],
        "allOf": [
          {
            "required": [
              "fixedSellPriceCzkPerMWh"
            ],
            "type": "object",
            "properties": {
              "fixedSellPriceCzkPerMWh": {
                "type": "number",
                "format": "double"
              }
            },
            "additionalProperties": false
          }
        ],
        "properties": {
          "sellingType": {
            "minLength": 1,
            "required": [
              "FIX",
              "SPOT"
            ],
            "type": "string"
          },
          "monthlyFeeCzk": {
            "type": "number",
            "format": "double"
          }
        }
      },
      "HouseholdAddressModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "streetName": {
            "type": "string",
            "nullable": true
          },
          "streetNumber": {
            "type": "string",
            "nullable": true
          },
          "city": {
            "type": "string",
            "nullable": true
          },
          "state": {
            "type": "string",
            "nullable": true
          },
          "postcode": {
            "type": "string",
            "nullable": true
          },
          "region": {
            "type": "string",
            "nullable": true
          },
          "district": {
            "type": "string",
            "nullable": true
          },
          "latLng": {
            "$ref": "#/components/schemas/NpgsqlPoint"
          },
          "countryIso2": {
            "type": "string",
            "nullable": true
          },
          "countryIso3": {
            "type": "string",
            "nullable": true
          },
          "countryName": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "InstallationConfirmRequestModel": {
        "required": [
          "applicantEmail",
          "applicantFullName",
          "applicantPhoneNumber"
        ],
        "type": "object",
        "properties": {
          "applicantEmail": {
            "type": "string",
            "nullable": true
          },
          "applicantFullName": {
            "type": "string",
            "nullable": true
          },
          "applicantPhoneNumber": {
            "type": "string",
            "nullable": true
          },
          "orderNumber": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "InstallationPossiblePartnerModel": {
        "type": "object",
        "properties": {
          "partnerName": {
            "type": "string",
            "nullable": true
          },
          "installationPrice": {
            "type": "number",
            "format": "double"
          },
          "routeLengthKm": {
            "type": "number",
            "format": "float"
          },
          "partnerBranchAddress": {
            "type": "string",
            "nullable": true
          },
          "partnerAddressId": {
            "type": "string",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      },
      "InstallationRequestModel": {
        "type": "object",
        "properties": {
          "address": {
            "$ref": "#/components/schemas/HouseholdAddressModel"
          },
          "applicantEmail": {
            "type": "string",
            "nullable": true
          },
          "applicantFullName": {
            "type": "string",
            "nullable": true
          },
          "applicantPhoneNumber": {
            "type": "string",
            "nullable": true
          },
          "inverterTypeKey": {
            "type": "string",
            "nullable": true
          },
          "installationTypeKey": {
            "type": "string",
            "nullable": true
          },
          "inverterCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "InstallationRequestResponseModel": {
        "type": "object",
        "properties": {
          "installationRequestId": {
            "type": "string",
            "format": "uuid"
          },
          "possiblePartners": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InstallationPossiblePartnerModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "InverterModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "key": {
            "type": "string",
            "nullable": true
          },
          "manufacturerId": {
            "type": "string",
            "format": "uuid"
          },
          "imageUrl": {
            "type": "string",
            "nullable": true
          },
          "imageFileName": {
            "type": "string",
            "nullable": true
          },
          "configurationImageFileName": {
            "type": "string",
            "nullable": true
          },
          "configurationDescription": {
            "type": "string",
            "nullable": true
          },
          "integrationStatusId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "integrationStatusKey": {
            "type": "string",
            "nullable": true
          },
          "supportsRtu": {
            "type": "boolean",
            "nullable": true
          },
          "supportsTcp": {
            "type": "boolean",
            "nullable": true
          },
          "supportsParallel": {
            "type": "boolean",
            "nullable": true
          },
          "manualUrl": {
            "type": "string",
            "nullable": true
          },
          "videoManualUrl": {
            "type": "string",
            "nullable": true
          },
          "supportsDryContact": {
            "type": "boolean",
            "nullable": true
          },
          "installationComplexityId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "installationComplexityKey": {
            "type": "string",
            "nullable": true
          },
          "installationComplexityName": {
            "type": "string",
            "nullable": true
          },
          "sortIndex": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "InverterSupportedModeModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "key": {
            "type": "string",
            "nullable": true
          },
          "manufacturerId": {
            "type": "string",
            "format": "uuid"
          },
          "supportedModes": {
            "type": "object",
            "additionalProperties": {
              "type": "boolean"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ManufacturerModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "logoUrl": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NpgsqlPoint": {
        "type": "object",
        "properties": {
          "x": {
            "type": "number",
            "format": "double"
          },
          "y": {
            "type": "number",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "PlanModeModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "originTypeKey": {
            "type": "string",
            "nullable": true
          },
          "modeTypeId": {
            "type": "string",
            "format": "uuid"
          },
          "modeTypeKey": {
            "type": "string",
            "nullable": true
          },
          "start": {
            "type": "string",
            "format": "date-time"
          },
          "startLocal": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "end": {
            "type": "string",
            "format": "date-time"
          },
          "endLocal": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "targetBattery": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdByUserId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "SavingCalculatorBatteryRequestModel": {
        "required": [
          "batterySizeKwh",
          "reservedBatteryCapacityPercentage"
        ],
        "type": "object",
        "properties": {
          "batterySizeKwh": {
            "type": "number",
            "format": "float"
          },
          "reservedBatteryCapacityPercentage": {
            "maximum": 100,
            "minimum": 0,
            "type": "integer",
            "format": "int32"
          },
          "maximumBatteryChargingPowerWatt": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "maximumBatteryDischargingPowerWatt": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "SavingCalculatorRequestModel": {
        "required": [
          "battery",
          "distribution",
          "electricityBuyingSettings",
          "periodType",
          "totalKWp"
        ],
        "type": "object",
        "properties": {
          "periodType": {
            "required": [
              "12M",
              "2024"
            ],
            "type": "string",
            "nullable": true
          },
          "yearlyConsumptionKWh": {
            "type": "number",
            "format": "float"
          },
          "totalKWp": {
            "type": "number",
            "format": "float"
          },
          "battery": {
            "$ref": "#/components/schemas/SavingCalculatorBatteryRequestModel"
          },
          "distribution": {
            "$ref": "#/components/schemas/SavingCaluclatorDistributionRequestModel"
          },
          "electricityBuyingSettings": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/FixBuyingSettings"
              },
              {
                "$ref": "#/components/schemas/SpotBuyingSettings"
              }
            ]
          },
          "electricitySellingSettings": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/FixSellingSettings"
              },
              {
                "$ref": "#/components/schemas/SpotSellingSettings"
              }
            ],
            "nullable": true
          },
          "customProductionConsumptionData": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomProductionConsumptionDataModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "SavingCaluclatorDistributionRequestModel": {
        "required": [
          "circuitBreakerMonthlyFee",
          "distributionRate",
          "distributor",
          "distributorFeeHighPerMWh",
          "lowTariffCommand",
          "renewableEnergyFeePerMWh",
          "systemServicesFeePerMWh"
        ],
        "type": "object",
        "properties": {
          "distributor": {
            "minLength": 1,
            "type": "string"
          },
          "distributionRate": {
            "minLength": 1,
            "type": "string"
          },
          "lowTariffCommand": {
            "minLength": 1,
            "type": "string"
          },
          "distributorFeeHighPerMWh": {
            "type": "number",
            "format": "double"
          },
          "distributorFeeLowPerMWh": {
            "type": "number",
            "format": "double"
          },
          "renewableEnergyFeePerMWh": {
            "type": "number",
            "format": "double"
          },
          "systemServicesFeePerMWh": {
            "type": "number",
            "format": "double"
          },
          "circuitBreakerMonthlyFee": {
            "type": "number",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "SavingsCalculatorDailyResultV1Model": {
        "type": "object",
        "properties": {
          "day": {
            "type": "string",
            "format": "date"
          },
          "productionBasicPV": {
            "type": "number",
            "format": "double"
          },
          "productionSmartPV": {
            "type": "number",
            "format": "double"
          },
          "consumptionWithoutPV": {
            "type": "number",
            "format": "double"
          },
          "consumptionBasicPV": {
            "type": "number",
            "format": "double"
          },
          "consumptionSmartPV": {
            "type": "number",
            "format": "double"
          },
          "priceWithoutPV": {
            "type": "number",
            "format": "double"
          },
          "buyPriceWithoutPV": {
            "type": "number",
            "format": "double"
          },
          "buyAmountWithoutPV": {
            "type": "number",
            "format": "double"
          },
          "priceWithBasicPV": {
            "type": "number",
            "format": "double"
          },
          "buyPriceWithBasicPV": {
            "type": "number",
            "format": "double"
          },
          "sellPriceWithBasicPV": {
            "type": "number",
            "format": "double"
          },
          "buyAmountWithBasicPV": {
            "type": "number",
            "format": "double"
          },
          "sellAmountWithBasicPV": {
            "type": "number",
            "format": "double"
          },
          "priceWithSmartPV": {
            "type": "number",
            "format": "double"
          },
          "buyPriceWithSmartPV": {
            "type": "number",
            "format": "double"
          },
          "sellPriceWithSmartPV": {
            "type": "number",
            "format": "double"
          },
          "buyAmountWithSmartPV": {
            "type": "number",
            "format": "double"
          },
          "sellAmountWithSmartPV": {
            "type": "number",
            "format": "double"
          },
          "smartPVSavings": {
            "type": "number",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "SavingsCalculatorModel": {
        "type": "object",
        "properties": {
          "periodType": {
            "type": "string",
            "nullable": true
          },
          "tddType": {
            "type": "string",
            "nullable": true
          },
          "batterySizeKwh": {
            "type": "number",
            "format": "float"
          },
          "totalKWp": {
            "type": "number",
            "format": "float"
          },
          "yearlyConsumption": {
            "type": "number",
            "format": "float"
          },
          "reservedBatteryCapacity": {
            "type": "integer",
            "format": "int32"
          },
          "vat": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "distributor": {
            "type": "string",
            "nullable": true
          },
          "lowTariffCommand": {
            "type": "string",
            "nullable": true
          },
          "electricityBuyType": {
            "type": "string",
            "nullable": true
          },
          "electricityBuyPrice": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "buyFeeAmount": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "buyFeeAmountSmart": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "buySpotPriceMinZero": {
            "type": "boolean"
          },
          "canSell": {
            "type": "boolean"
          },
          "electricitySellType": {
            "type": "string",
            "nullable": true
          },
          "electricitySellPrice": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "sellerFeeTypeKey": {
            "type": "string",
            "nullable": true
          },
          "sellerFeeAmount": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "sellerFeeAmountSmart": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "sellSpotPriceMinZero": {
            "type": "boolean"
          },
          "distributorFeeHigh": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "distributorFeeLow": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "renewableEnergyFee": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "systemServicesFee": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "maximumBatteryChargingPowerWatt": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "maximumBatteryDischargingPowerWatt": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "monthlyBuyFeeCzk": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "monthlySellFeeCzk": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "circuitBreakerMonthlyFee": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "electricityBuyPriceInLowTariff": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "buyerFeeTypeKey": {
            "type": "string",
            "nullable": true
          },
          "customProductionConsumptionData": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomProductionConsumptionDataModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "SavingsCalculatorMonthlyResultModel": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SavingsCalculatorResultBase"
          },
          {
            "type": "object",
            "properties": {
              "month": {
                "type": "string",
                "format": "date"
              }
            },
            "additionalProperties": false
          }
        ]
      },
      "SavingsCalculatorMonthlyResultV1Model": {
        "type": "object",
        "properties": {
          "month": {
            "type": "string",
            "format": "date"
          },
          "productionBasicPV": {
            "type": "number",
            "format": "double"
          },
          "productionSmartPV": {
            "type": "number",
            "format": "double"
          },
          "consumptionWithoutPV": {
            "type": "number",
            "format": "double"
          },
          "consumptionBasicPV": {
            "type": "number",
            "format": "double"
          },
          "consumptionSmartPV": {
            "type": "number",
            "format": "double"
          },
          "priceWithoutPV": {
            "type": "number",
            "format": "double"
          },
          "buyPriceWithoutPV": {
            "type": "number",
            "format": "double"
          },
          "buyAmountWithoutPV": {
            "type": "number",
            "format": "double"
          },
          "priceWithBasicPV": {
            "type": "number",
            "format": "double"
          },
          "buyPriceWithBasicPV": {
            "type": "number",
            "format": "double"
          },
          "sellPriceWithBasicPV": {
            "type": "number",
            "format": "double"
          },
          "buyAmountWithBasicPV": {
            "type": "number",
            "format": "double"
          },
          "sellAmountWithBasicPV": {
            "type": "number",
            "format": "double"
          },
          "priceWithSmartPV": {
            "type": "number",
            "format": "double"
          },
          "buyPriceWithSmartPV": {
            "type": "number",
            "format": "double"
          },
          "sellPriceWithSmartPV": {
            "type": "number",
            "format": "double"
          },
          "buyAmountWithSmartPV": {
            "type": "number",
            "format": "double"
          },
          "sellAmountWithSmartPV": {
            "type": "number",
            "format": "double"
          },
          "smartPVSavings": {
            "type": "number",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "SavingsCalculatorResultBase": {
        "type": "object",
        "properties": {
          "withoutPV": {
            "$ref": "#/components/schemas/EnergyDataSet"
          },
          "basicPV": {
            "$ref": "#/components/schemas/EnergyDataSet"
          },
          "smartPV": {
            "$ref": "#/components/schemas/EnergyDataSet"
          },
          "savingsComparedToBasicPV": {
            "type": "number",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "SavingsCalculatorResultModel": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SavingsCalculatorResultBase"
          },
          {
            "type": "object",
            "properties": {
              "months": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/SavingsCalculatorMonthlyResultModel"
                },
                "nullable": true
              }
            },
            "additionalProperties": false
          }
        ]
      },
      "SavingsCalculatorResultV1Model": {
        "type": "object",
        "properties": {
          "productionBasicPV": {
            "type": "number",
            "format": "double"
          },
          "productionSmartPV": {
            "type": "number",
            "format": "double"
          },
          "consumptionWithoutPV": {
            "type": "number",
            "format": "double"
          },
          "consumptionBasicPV": {
            "type": "number",
            "format": "double"
          },
          "consumptionSmartPV": {
            "type": "number",
            "format": "double"
          },
          "priceWithoutPV": {
            "type": "number",
            "format": "double"
          },
          "priceWithBasicPV": {
            "type": "number",
            "format": "double"
          },
          "buyPriceWithoutPV": {
            "type": "number",
            "format": "double"
          },
          "buyPriceWithBasicPV": {
            "type": "number",
            "format": "double"
          },
          "sellPriceWithBasicPV": {
            "type": "number",
            "format": "double"
          },
          "buyAmountWithoutPV": {
            "type": "number",
            "format": "double"
          },
          "buyAmountWithBasicPV": {
            "type": "number",
            "format": "double"
          },
          "sellAmountWithBasicPV": {
            "type": "number",
            "format": "double"
          },
          "priceWithSmartPV": {
            "type": "number",
            "format": "double"
          },
          "buyPriceWithSmartPV": {
            "type": "number",
            "format": "double"
          },
          "sellPriceWithSmartPV": {
            "type": "number",
            "format": "double"
          },
          "buyAmountWithSmartPV": {
            "type": "number",
            "format": "double"
          },
          "sellAmountWithSmartPV": {
            "type": "number",
            "format": "double"
          },
          "smartPVSavings": {
            "type": "number",
            "format": "double"
          },
          "months": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SavingsCalculatorMonthlyResultV1Model"
            },
            "nullable": true
          },
          "days": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SavingsCalculatorDailyResultV1Model"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "SpotBuyingSettings": {
        "title": "SpotBuyingSettings",
        "required": [
          "buyingType",
          "monthlyFeeCzk"
        ],
        "allOf": [
          {
            "required": [
              "fee",
              "feeType",
              "spotPriceMinZero"
            ],
            "type": "object",
            "properties": {
              "feeType": {
                "minLength": 1,
                "required": [
                  "Percentage",
                  "PerMWh"
                ],
                "type": "string"
              },
              "fee": {
                "type": "number",
                "format": "double"
              },
              "spotPriceMinZero": {
                "type": "boolean"
              }
            },
            "additionalProperties": false
          }
        ],
        "properties": {
          "buyingType": {
            "minLength": 1,
            "required": [
              "FIX",
              "SPOT"
            ],
            "type": "string"
          },
          "monthlyFeeCzk": {
            "type": "number",
            "format": "double"
          },
          "vat": {
            "type": "number",
            "format": "double",
            "nullable": true
          }
        }
      },
      "SpotSellingSettings": {
        "title": "SpotSellingSettings",
        "required": [
          "monthlyFeeCzk",
          "sellingType"
        ],
        "allOf": [
          {
            "required": [
              "fee",
              "feeType",
              "spotPriceMinZero"
            ],
            "type": "object",
            "properties": {
              "feeType": {
                "minLength": 1,
                "required": [
                  "Percentage",
                  "PerMWh"
                ],
                "type": "string"
              },
              "fee": {
                "type": "number",
                "format": "double"
              },
              "spotPriceMinZero": {
                "type": "boolean"
              }
            },
            "additionalProperties": false
          }
        ],
        "properties": {
          "sellingType": {
            "minLength": 1,
            "required": [
              "FIX",
              "SPOT"
            ],
            "type": "string"
          },
          "monthlyFeeCzk": {
            "type": "number",
            "format": "double"
          }
        }
      },
      "TokenModel": {
        "required": [
          "refreshToken"
        ],
        "type": "object",
        "properties": {
          "refreshToken": {
            "minLength": 1,
            "type": "string",
            "description": "Refresh token used to obtain a new access token"
          }
        },
        "additionalProperties": false,
        "description": "Model for refresh token request"
      },
      "TokenModelDto": {
        "required": [
          "refreshToken"
        ],
        "type": "object",
        "properties": {
          "refreshToken": {
            "minLength": 1,
            "type": "string",
            "description": "Refresh token used to obtain a new access token"
          }
        },
        "additionalProperties": false,
        "description": "Model for refresh token request"
      },
      "TokenResponseModel": {
        "required": [
          "jwtToken"
        ],
        "type": "object",
        "properties": {
          "jwtToken": {
            "minLength": 1,
            "type": "string",
            "description": "JWT token that is generated after successful authentication"
          }
        },
        "additionalProperties": false,
        "description": "Model for the response containing the JWT token"
      },
      "WallboxModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "key": {
            "type": "string",
            "nullable": true
          },
          "manufacturerId": {
            "type": "string",
            "format": "uuid"
          },
          "imageUrl": {
            "type": "string",
            "nullable": true
          },
          "imageFileName": {
            "type": "string",
            "nullable": true
          },
          "configurationImageFileName": {
            "type": "string",
            "nullable": true
          },
          "configurationDescription": {
            "type": "string",
            "nullable": true
          },
          "integrationStatusId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "integrationStatusKey": {
            "type": "string",
            "nullable": true
          },
          "supportsRtu": {
            "type": "boolean",
            "nullable": true
          },
          "supportsTcp": {
            "type": "boolean",
            "nullable": true
          },
          "manualUrl": {
            "type": "string",
            "nullable": true
          },
          "videoManualUrl": {
            "type": "string",
            "nullable": true
          },
          "installationComplexityId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "installationComplexityKey": {
            "type": "string",
            "nullable": true
          },
          "installationComplexityName": {
            "type": "string",
            "nullable": true
          },
          "sortIndex": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      }
    },
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
        "scheme": "bearer",
        "bearerFormat": "JWT"
      }
    }
  }
}