{
  "openapi": "3.1.1",
  "info": {
    "title": "ProRanked API",
    "version": "v1"
  },
  "servers": [
    {
      "url": "https://api.proranked.com"
    }
  ],
  "paths": {
    "/ocpi/versions": {
      "get": {
        "tags": [
          "OCPI Versions"
        ],
        "description": "Get all supported OCPI versions",
        "operationId": "GetOCPIVersions",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OCPIResponseOfListOfVersionDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OCPIError"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/ocpi/{version}": {
      "get": {
        "tags": [
          "OCPI Versions"
        ],
        "description": "Get details for a specific OCPI version including available endpoints",
        "operationId": "GetOCPIVersionDetails",
        "parameters": [
          {
            "name": "version",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OCPIResponseOfVersionDetailsDto"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OCPIError"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/chargers": {
      "get": {
        "tags": [
          "Public API - Chargers"
        ],
        "summary": "List all chargers",
        "description": "Returns a paginated list of chargers in the network.",
        "operationId": "PublicApi_GetChargers",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "status",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "locationId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "isPublic",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspChargersListResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspChargersErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/chargers/{id}": {
      "get": {
        "tags": [
          "Public API - Chargers"
        ],
        "summary": "Get charger details",
        "description": "Returns detailed information about a specific charger including its connectors.",
        "operationId": "PublicApi_GetChargerById",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspChargersDetailResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspChargersErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/chargers/{id}/reboot": {
      "post": {
        "tags": [
          "Public API - Chargers"
        ],
        "summary": "Reboot a charger",
        "description": "Sends a reset command to the charger. Use 'Soft' for firmware restart or 'Hard' for power cycle.",
        "operationId": "PublicApi_RebootCharger",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/RebootChargerRequest"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspChargersRebootResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspChargersErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspChargersErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/chargers/{identifier}/info": {
      "get": {
        "tags": [
          "Public API - Chargers"
        ],
        "summary": "Get charger info for QR code scanning",
        "description": "Returns charger information with pricing details for QR code scanning. Accepts UUID, Uid, or SerialNumber as identifier. Only returns public chargers at published locations.",
        "operationId": "PublicApi_GetChargerInfo",
        "parameters": [
          {
            "name": "identifier",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspChargersInfoResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspChargersErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/charging/sessions": {
      "get": {
        "tags": [
          "Public API - Sessions"
        ],
        "summary": "List charging sessions",
        "description": "Returns a paginated list of charging sessions for the network.",
        "operationId": "PublicApi_GetSessions",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "status",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "chargerId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "locationId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "from",
            "in": "query",
            "schema": {
              "format": "date-time"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspSessionsListResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspSessionsErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/charging/sessions/{id}": {
      "get": {
        "tags": [
          "Public API - Sessions"
        ],
        "summary": "Get session details",
        "description": "Returns detailed information about a specific charging session including cost breakdown.",
        "operationId": "PublicApi_GetSessionById",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspSessionsDetailResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspSessionsErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspSessionsErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/charging/sessions/{id}/receipt": {
      "get": {
        "tags": [
          "Public API - Sessions"
        ],
        "summary": "Download session receipt (PDF)",
        "description": "Returns a printable PDF receipt for a charging session (the artifact a driver shows post-session / for expense reporting). Driver keys get their own sessions; operator keys their network's.",
        "operationId": "PublicApi_DownloadSessionReceipt",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspSessionsErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspSessionsErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/charging/sessions/{id}/meter-values": {
      "get": {
        "tags": [
          "Public API - Sessions"
        ],
        "summary": "Get a session's energy curve (meter values)",
        "description": "Returns the time-ordered OCPP meter-value samples captured during the charge — the per-session kWh consumption curve (cumulative register + instantaneous power, plus current/voltage/SoC/temperature when the charger reports them). Use it to draw charging graphs or verify delivered energy. Capped by `limit` (default 1000, max 5000); `truncated` flags when the session has more. Driver keys see their own sessions; operator keys their network's.",
        "operationId": "PublicApi_GetSessionMeterValues",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspSessionMeterValuesResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspSessionsErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspSessionsErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/wallet": {
      "get": {
        "tags": [
          "Public API - Wallet"
        ],
        "summary": "List the driver's wallet balances (per operator network)",
        "operationId": "Emsp_GetMyWallets",
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/wallet/ledger": {
      "get": {
        "tags": [
          "Public API - Wallet"
        ],
        "summary": "Recent wallet ledger entries for the driver",
        "operationId": "Emsp_GetMyWalletLedger",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/charging/start": {
      "post": {
        "tags": [
          "Public API - Charging"
        ],
        "summary": "Start a charging session",
        "description": "Initiates a charging session on the specified charger and connector using the provided authorization ID tag.",
        "operationId": "PublicApi_StartSession",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StartSessionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspChargingStartResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspChargingErrorResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment Required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspChargingErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspChargingErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspChargingErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/charging/stop": {
      "post": {
        "tags": [
          "Public API - Charging"
        ],
        "summary": "Stop a charging session",
        "description": "Stops an active charging session and returns the final session details with cost breakdown.",
        "operationId": "PublicApi_StopSession",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StopSessionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspChargingStopResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspChargingErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspChargingErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspChargingErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/charging/schedule": {
      "post": {
        "tags": [
          "Public API - Charging"
        ],
        "summary": "Schedule a charging session for a future time",
        "operationId": "PublicApi_CreateScheduledCharge",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ScheduleChargeRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspScheduledChargingResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspScheduledChargingErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspScheduledChargingErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspScheduledChargingErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/charging/schedules": {
      "get": {
        "tags": [
          "Public API - Charging"
        ],
        "summary": "List your scheduled charges",
        "operationId": "PublicApi_ListScheduledCharges",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspScheduledChargingListResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/charging/schedule/{id}": {
      "delete": {
        "tags": [
          "Public API - Charging"
        ],
        "summary": "Cancel a scheduled charge",
        "operationId": "PublicApi_CancelScheduledCharge",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspScheduledChargingErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/connectors/{id}/status": {
      "get": {
        "tags": [
          "Public API - Connectors"
        ],
        "summary": "Get connector status",
        "description": "Returns the current status and details of a specific connector.",
        "operationId": "PublicApi_GetConnectorStatus",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspConnectorsStatusResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspConnectorsErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/users": {
      "post": {
        "tags": [
          "Public API - Users"
        ],
        "summary": "Create a new user",
        "description": "Creates a new user/driver in the network. Returns the created user with statistics.",
        "operationId": "PublicApi_CreateUser",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateUserRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspUsersUserResponse"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspUsersErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      },
      "get": {
        "tags": [
          "Public API - Users"
        ],
        "summary": "List users",
        "description": "Returns a paginated list of users in the network.",
        "operationId": "PublicApi_ListUsers",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "search",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspUsersUserListResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspUsersErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/users/{id}": {
      "get": {
        "tags": [
          "Public API - Users"
        ],
        "summary": "Get user details",
        "description": "Returns detailed information about a user including charging statistics.",
        "operationId": "PublicApi_GetUserById",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspUsersUserResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspUsersErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      },
      "put": {
        "tags": [
          "Public API - Users"
        ],
        "summary": "Update user information",
        "description": "Updates an existing user's information. Only provided fields are updated.",
        "operationId": "PublicApi_UpdateUser",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateUserRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspUsersUserResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspUsersErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspUsersErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/auth/tokens": {
      "post": {
        "tags": [
          "Public API - Authentication"
        ],
        "summary": "Create authentication token",
        "description": "Creates a new authentication token for a user. The token can be used for charging sessions.",
        "operationId": "PublicApi_CreateToken",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateTokenRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspAuthTokenResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspAuthErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspAuthErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      },
      "get": {
        "tags": [
          "Public API - Authentication"
        ],
        "summary": "List tokens",
        "description": "Returns a paginated list of tokens for a user.",
        "operationId": "PublicApi_ListTokens",
        "parameters": [
          {
            "name": "userId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "tokenType",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "valid",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspAuthTokenListResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/auth/tokens/{id}": {
      "get": {
        "tags": [
          "Public API - Authentication"
        ],
        "summary": "Get token details",
        "description": "Returns detailed information about a specific token.",
        "operationId": "PublicApi_GetToken",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspAuthTokenResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspAuthErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      },
      "delete": {
        "tags": [
          "Public API - Authentication"
        ],
        "summary": "Invalidate a token",
        "description": "Invalidates (soft-deletes) a token so it can no longer be used for authorization.",
        "operationId": "PublicApi_InvalidateToken",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspAuthTokenActionResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspAuthErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/auth/driver/register": {
      "post": {
        "tags": [
          "Public API - Driver Authentication"
        ],
        "summary": "Register a new driver account",
        "operationId": "PublicApi_DriverRegister",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DriverRegisterRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspDriverAuthResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspDriverAuthErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/auth/driver/login": {
      "post": {
        "tags": [
          "Public API - Driver Authentication"
        ],
        "summary": "Login with email and password",
        "operationId": "PublicApi_DriverLogin",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DriverLoginRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspDriverAuthResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspDriverAuthErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspDriverAuthErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/auth/driver/refresh": {
      "post": {
        "tags": [
          "Public API - Driver Authentication"
        ],
        "summary": "Refresh access token using refresh token",
        "operationId": "PublicApi_DriverRefresh",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DriverRefreshRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspDriverAuthRefreshResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspDriverAuthErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/auth/driver/forgot-password": {
      "post": {
        "tags": [
          "Public API - Driver Authentication"
        ],
        "summary": "Request a password reset email",
        "operationId": "PublicApi_DriverForgotPassword",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DriverForgotPasswordRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspDriverAuthMessageResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/auth/driver/reset-password": {
      "post": {
        "tags": [
          "Public API - Driver Authentication"
        ],
        "summary": "Reset password using token from email",
        "operationId": "PublicApi_DriverResetPassword",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DriverResetPasswordRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspDriverAuthMessageResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspDriverAuthErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/auth/driver/me": {
      "get": {
        "tags": [
          "Public API - Driver Authentication"
        ],
        "summary": "Get authenticated driver's profile",
        "operationId": "PublicApi_DriverMe",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspDriverAuthMeResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspDriverAuthErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspDriverAuthErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/networks/{networkId}/branding": {
      "get": {
        "tags": [
          "Public API - Branding"
        ],
        "summary": "Public network branding (name, logo, colors) for white-label theming",
        "operationId": "PublicApi_NetworkBranding",
        "parameters": [
          {
            "name": "networkId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspNetworkBrandingResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspNetworkBrandingErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/transactions": {
      "get": {
        "tags": [
          "Public API - Transactions"
        ],
        "summary": "List transactions",
        "description": "Returns a paginated list of transactions (CDRs) for the network.",
        "operationId": "PublicApi_ListTransactions",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "from",
            "in": "query",
            "schema": {
              "format": "date-time"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "format": "date-time"
            }
          },
          {
            "name": "userId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "status",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspTransactionsListResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspTransactionsErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/transactions/{id}": {
      "get": {
        "tags": [
          "Public API - Transactions"
        ],
        "summary": "Get transaction details",
        "description": "Returns detailed information about a specific transaction including cost breakdown.",
        "operationId": "PublicApi_GetTransaction",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspTransactionsDetailResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspTransactionsErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspTransactionsErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/invoices": {
      "post": {
        "tags": [
          "Public API - Invoices"
        ],
        "summary": "Generate invoice",
        "description": "Generates an invoice for one or more transactions and persists it (the covered transactions are stamped with the invoice number).",
        "operationId": "PublicApi_GenerateInvoice",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GenerateInvoiceRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspTransactionsInvoiceResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspTransactionsErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspTransactionsErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspTransactionsErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspTransactionsErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      },
      "get": {
        "tags": [
          "Public API - Invoices"
        ],
        "summary": "List invoices",
        "description": "Lists generated invoices (one row per invoice number), newest first. Scoped to the caller: a driver sees only their own invoices; an operator key sees its network's.",
        "operationId": "PublicApi_ListInvoices",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PublicApiInvoiceSummaryDto"
                  }
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspTransactionsErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/invoices/{invoiceNumber}": {
      "get": {
        "tags": [
          "Public API - Invoices"
        ],
        "summary": "Retrieve invoice",
        "description": "Retrieves a single invoice (with line items + totals) by its invoice number.",
        "operationId": "PublicApi_GetInvoice",
        "parameters": [
          {
            "name": "invoiceNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspTransactionsInvoiceResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspTransactionsErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspTransactionsErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/pricing/calculate": {
      "post": {
        "tags": [
          "Public API - Pricing"
        ],
        "summary": "Calculate charging cost",
        "description": "Calculates the estimated cost for a charging session based on tariff rates.",
        "operationId": "PublicApi_CalculatePricing",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PricingCalculationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspTransactionsPricingResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspTransactionsErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspTransactionsErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/analytics/sessions": {
      "get": {
        "tags": [
          "Public API - Analytics"
        ],
        "summary": "Get session analytics",
        "description": "Returns session analytics including counts, averages, and time series data.",
        "operationId": "PublicApi_GetSessionAnalytics",
        "parameters": [
          {
            "name": "period",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "from",
            "in": "query",
            "schema": {
              "format": "date-time"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspAnalyticsSessionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspAnalyticsErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspAnalyticsErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/analytics/revenue": {
      "get": {
        "tags": [
          "Public API - Analytics"
        ],
        "summary": "Get revenue analytics",
        "description": "Returns revenue analytics including totals, averages, and time series data.",
        "operationId": "PublicApi_GetRevenueAnalytics",
        "parameters": [
          {
            "name": "period",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "from",
            "in": "query",
            "schema": {
              "format": "date-time"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspAnalyticsRevenueResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspAnalyticsErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspAnalyticsErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/analytics/energy": {
      "get": {
        "tags": [
          "Public API - Analytics"
        ],
        "summary": "Get energy consumption analytics",
        "description": "Returns energy consumption analytics including totals and time series data.",
        "operationId": "PublicApi_GetEnergyAnalytics",
        "parameters": [
          {
            "name": "period",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "from",
            "in": "query",
            "schema": {
              "format": "date-time"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspAnalyticsEnergyResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspAnalyticsErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspAnalyticsErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/reports/export": {
      "get": {
        "tags": [
          "Public API - Reports"
        ],
        "summary": "Export custom reports",
        "description": "Exports reports in JSON or CSV format. Supported types: daily-sales, by-location, by-user, sessions-summary.",
        "operationId": "PublicApi_ExportReport",
        "parameters": [
          {
            "name": "type",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "from",
            "in": "query",
            "schema": {
              "format": "date-time"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "format": "date-time"
            }
          },
          {
            "name": "locationId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "userId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspAnalyticsReportExportResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspAnalyticsErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspAnalyticsErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/webhooks": {
      "get": {
        "tags": [
          "Public API - Webhooks"
        ],
        "summary": "List webhook subscriptions",
        "operationId": "PublicApi_ListWebhooks",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspWebhooksListResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspWebhooksErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      },
      "post": {
        "tags": [
          "Public API - Webhooks"
        ],
        "summary": "Create webhook subscription",
        "operationId": "PublicApi_CreateWebhook",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateWebhookRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspWebhooksCreatedResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspWebhooksErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspWebhooksErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/webhooks/{webhookId}": {
      "patch": {
        "tags": [
          "Public API - Webhooks"
        ],
        "summary": "Update webhook subscription",
        "operationId": "PublicApi_UpdateWebhook",
        "parameters": [
          {
            "name": "webhookId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateWebhookRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspWebhooksSubscriptionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspWebhooksErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspWebhooksErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspWebhooksErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      },
      "delete": {
        "tags": [
          "Public API - Webhooks"
        ],
        "summary": "Delete webhook subscription",
        "operationId": "PublicApi_DeleteWebhook",
        "parameters": [
          {
            "name": "webhookId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspWebhooksErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspWebhooksErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/webhooks/{webhookId}/test": {
      "post": {
        "tags": [
          "Public API - Webhooks"
        ],
        "summary": "Send test event to webhook",
        "operationId": "PublicApi_TestWebhook",
        "parameters": [
          {
            "name": "webhookId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspWebhooksTestResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspWebhooksErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspWebhooksErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/webhooks/{webhookId}/deliveries": {
      "get": {
        "tags": [
          "Public API - Webhooks"
        ],
        "summary": "List webhook deliveries",
        "operationId": "PublicApi_ListWebhookDeliveries",
        "parameters": [
          {
            "name": "webhookId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspWebhooksDeliveryListResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspWebhooksErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspWebhooksErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/webhooks/{webhookId}/deliveries/{deliveryId}": {
      "get": {
        "tags": [
          "Public API - Webhooks"
        ],
        "summary": "Get webhook delivery detail",
        "operationId": "PublicApi_GetWebhookDelivery",
        "parameters": [
          {
            "name": "webhookId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "deliveryId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspWebhooksDeliveryDetailResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspWebhooksErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspWebhooksErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/webhooks/{webhookId}/deliveries/{deliveryId}/retry": {
      "post": {
        "tags": [
          "Public API - Webhooks"
        ],
        "summary": "Retry a webhook delivery",
        "operationId": "PublicApi_RetryWebhookDelivery",
        "parameters": [
          {
            "name": "webhookId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "deliveryId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "202": {
            "description": "Accepted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspWebhooksRetryResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspWebhooksErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspWebhooksErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/webhooks/event-types": {
      "get": {
        "tags": [
          "Public API - Webhooks"
        ],
        "summary": "List available webhook event types",
        "operationId": "PublicApi_GetWebhookEventTypes",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspWebhooksEventTypesResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/events/stream": {
      "get": {
        "tags": [
          "Public API - Events"
        ],
        "summary": "SSE event stream for real-time updates",
        "operationId": "PublicApi_StreamEvents",
        "parameters": [
          {
            "name": "eventTypes",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "stationIds",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspEventStreamErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/reservations": {
      "post": {
        "tags": [
          "Public API - Reservations"
        ],
        "summary": "Reserve a connector",
        "description": "Holds a connector for the authenticated driver until the expiry time (OCPP ReserveNow).",
        "operationId": "PublicApi_Reserve",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReserveRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspReservationsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspReservationsErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspReservationsErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspReservationsErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspReservationsRejectedResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      },
      "get": {
        "tags": [
          "Public API - Reservations"
        ],
        "summary": "List reservations",
        "operationId": "PublicApi_ListReservations",
        "parameters": [
          {
            "name": "status",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspReservationsListResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspReservationsErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/reservations/{id}": {
      "get": {
        "tags": [
          "Public API - Reservations"
        ],
        "summary": "Get a reservation",
        "operationId": "PublicApi_GetReservation",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspReservationsResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspReservationsErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspReservationsErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      },
      "delete": {
        "tags": [
          "Public API - Reservations"
        ],
        "summary": "Cancel a reservation",
        "operationId": "PublicApi_CancelReservation",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspReservationsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspReservationsErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspReservationsErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspReservationsErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/locations": {
      "get": {
        "tags": [
          "Public API - Locations"
        ],
        "summary": "List locations",
        "operationId": "PublicApi_ListLocations",
        "parameters": [
          {
            "name": "city",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspLocationsListResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspLocationsErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/locations/search": {
      "get": {
        "tags": [
          "Public API - Locations"
        ],
        "summary": "Find locations near a point",
        "operationId": "PublicApi_SearchLocations",
        "parameters": [
          {
            "name": "lat",
            "in": "query",
            "schema": {
              "type": "object",
              "anyOf": [
                {
                  "type": "number"
                },
                {
                  "enum": [
                    "NaN",
                    "Infinity",
                    "-Infinity"
                  ]
                }
              ],
              "format": "double"
            }
          },
          {
            "name": "lng",
            "in": "query",
            "schema": {
              "type": "object",
              "anyOf": [
                {
                  "type": "number"
                },
                {
                  "enum": [
                    "NaN",
                    "Infinity",
                    "-Infinity"
                  ]
                }
              ],
              "format": "double"
            }
          },
          {
            "name": "radiusKm",
            "in": "query",
            "schema": {
              "type": "object",
              "anyOf": [
                {
                  "type": "number"
                },
                {
                  "enum": [
                    "NaN",
                    "Infinity",
                    "-Infinity"
                  ]
                }
              ],
              "format": "double"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspLocationsListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspLocationsErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/locations/{id}": {
      "get": {
        "tags": [
          "Public API - Locations"
        ],
        "summary": "Get a location",
        "operationId": "PublicApi_GetLocation",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspLocationsDetailResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspLocationsErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/locations/{id}/chargers": {
      "get": {
        "tags": [
          "Public API - Locations"
        ],
        "summary": "List chargers at a location",
        "operationId": "PublicApi_GetLocationChargers",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspLocationsChargersResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspLocationsErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/locations/{id}/reviews": {
      "get": {
        "tags": [
          "Public API - Locations"
        ],
        "summary": "Driver reviews + rating summary for a location",
        "operationId": "PublicApi_GetLocationReviews",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspLocationsReviewsResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspLocationsErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      },
      "post": {
        "tags": [
          "Public API - Locations"
        ],
        "summary": "Create or update the driver's review for a location",
        "operationId": "PublicApi_AddLocationReview",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LocationReviewRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspLocationsReviewResultResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspLocationsErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspLocationsErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspLocationsErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/locations/{id}/report": {
      "post": {
        "tags": [
          "Public API - Locations"
        ],
        "summary": "Report a problem at a location (raises an operator alert)",
        "operationId": "PublicApi_ReportLocationIssue",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LocationIssueReportRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspLocationsIssueReceiptResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspLocationsErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspLocationsErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/tariffs": {
      "get": {
        "tags": [
          "Public API - Tariffs"
        ],
        "summary": "List available tariffs",
        "operationId": "PublicApi_ListTariffs",
        "parameters": [
          {
            "name": "activeOnly",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspTariffsListResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspTariffsErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/tariffs/{id}": {
      "get": {
        "tags": [
          "Public API - Tariffs"
        ],
        "summary": "Get a tariff",
        "operationId": "PublicApi_GetTariff",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspTariffsDetailResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspTariffsErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/smart-charging/{chargerId}/limit": {
      "get": {
        "tags": [
          "Public API - Smart Charging"
        ],
        "summary": "Get the effective charging limit for a connector",
        "operationId": "PublicApi_GetSmartChargingLimit",
        "parameters": [
          {
            "name": "chargerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "connector",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "unit",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspSmartChargingLimitResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspSmartChargingErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspSmartChargingErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspSmartChargingErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      },
      "put": {
        "tags": [
          "Public API - Smart Charging"
        ],
        "summary": "Set a max charging speed for a connector",
        "operationId": "PublicApi_SetSmartChargingLimit",
        "parameters": [
          {
            "name": "chargerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SmartChargingLimitRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspSmartChargingSetLimitResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspSmartChargingErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspSmartChargingErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspSmartChargingErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      },
      "delete": {
        "tags": [
          "Public API - Smart Charging"
        ],
        "summary": "Clear the driver-set charging limit on a connector",
        "operationId": "PublicApi_ClearSmartChargingLimit",
        "parameters": [
          {
            "name": "chargerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "connector",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspSmartChargingClearLimitResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspSmartChargingErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspSmartChargingErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/remote-control/{chargerId}/unlock": {
      "post": {
        "tags": [
          "Public API - Remote Control"
        ],
        "summary": "Unlock a connector",
        "operationId": "PublicApi_RemoteUnlock",
        "parameters": [
          {
            "name": "chargerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UnlockRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspRemoteControlUnlockResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspRemoteControlErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspRemoteControlErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/remote-control/{chargerId}/trigger": {
      "post": {
        "tags": [
          "Public API - Remote Control"
        ],
        "summary": "Ask the charger to re-send a message",
        "operationId": "PublicApi_RemoteTrigger",
        "parameters": [
          {
            "name": "chargerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TriggerRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspRemoteControlTriggerResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspRemoteControlErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspRemoteControlErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspRemoteControlErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/remote-control/{chargerId}/reset": {
      "post": {
        "tags": [
          "Public API - Remote Control"
        ],
        "summary": "Reset a charger",
        "operationId": "PublicApi_RemoteReset",
        "parameters": [
          {
            "name": "chargerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ResetRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspRemoteControlResetResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspRemoteControlErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspRemoteControlErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/notifications/preferences": {
      "get": {
        "tags": [
          "Public API - Notifications"
        ],
        "summary": "Get the driver's notification preferences",
        "operationId": "PublicApi_GetNotificationPreferences",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspNotificationsPreferencesResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspNotificationsErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      },
      "put": {
        "tags": [
          "Public API - Notifications"
        ],
        "summary": "Update the driver's notification preferences",
        "operationId": "PublicApi_UpdateNotificationPreferences",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NotificationPreferencesRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspNotificationsPreferencesResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspNotificationsErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/favorites": {
      "get": {
        "tags": [
          "Public API - Favorites"
        ],
        "summary": "List the driver's favorites",
        "operationId": "PublicApi_ListFavorites",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspFavoritesFavoriteListResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspFavoritesErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      },
      "post": {
        "tags": [
          "Public API - Favorites"
        ],
        "summary": "Save a favorite",
        "operationId": "PublicApi_AddFavorite",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FavoriteRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspFavoritesFavoriteResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspFavoritesErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspFavoritesErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/favorites/{id}": {
      "delete": {
        "tags": [
          "Public API - Favorites"
        ],
        "summary": "Remove a favorite",
        "operationId": "PublicApi_RemoveFavorite",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspFavoritesErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/push/subscribe": {
      "post": {
        "tags": [
          "Public API - Push"
        ],
        "summary": "Register this device's web-push subscription",
        "operationId": "PublicApi_PushSubscribe",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PushSubscribeRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspPushSubscribeResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspPushErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspPushErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/push/unsubscribe": {
      "post": {
        "tags": [
          "Public API - Push"
        ],
        "summary": "Remove a web-push subscription",
        "operationId": "PublicApi_PushUnsubscribe",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PushUnsubscribeRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspPushErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspPushErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/push/test": {
      "post": {
        "tags": [
          "Public API - Push"
        ],
        "summary": "Send a test push to the driver's devices",
        "operationId": "PublicApi_PushTest",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspPushTestResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspPushErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/payments/config": {
      "get": {
        "tags": [
          "Public API - Payments"
        ],
        "summary": "Discover how this network handles payment",
        "operationId": "PublicApi_GetPaymentConfig",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspPaymentsConfigResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspPaymentsErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/payments/methods": {
      "get": {
        "tags": [
          "Public API - Payments"
        ],
        "summary": "List the driver's saved cards (phevnix_managed only)",
        "operationId": "PublicApi_GetPaymentMethods",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspPaymentsMethodsResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspPaymentsErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/payments/setup-intent": {
      "post": {
        "tags": [
          "Public API - Payments"
        ],
        "summary": "Begin saving a card — returns a SetupIntent client_secret for the app",
        "operationId": "PublicApi_CreateSetupIntent",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspPaymentsSetupIntentResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspPaymentsErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspPaymentsErrorResponse"
                }
              }
            }
          },
          "502": {
            "description": "Bad Gateway",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspPaymentsErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/payments/setup-checkout": {
      "post": {
        "tags": [
          "Public API - Payments"
        ],
        "summary": "Begin saving a card via a Stripe-HOSTED page — returns a URL the driver opens in a browser",
        "operationId": "PublicApi_CreateSetupCheckout",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspPaymentsSetupCheckoutResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspPaymentsErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspPaymentsErrorResponse"
                }
              }
            }
          },
          "502": {
            "description": "Bad Gateway",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspPaymentsErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/payments/methods/{id}/default": {
      "post": {
        "tags": [
          "Public API - Payments"
        ],
        "summary": "Make a saved card the default",
        "operationId": "PublicApi_SetDefaultPaymentMethod",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspPaymentsErrorResponse"
                }
              }
            }
          },
          "502": {
            "description": "Bad Gateway",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspPaymentsErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/payments/methods/{id}": {
      "delete": {
        "tags": [
          "Public API - Payments"
        ],
        "summary": "Remove a saved card",
        "operationId": "PublicApi_RemovePaymentMethod",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspPaymentsErrorResponse"
                }
              }
            }
          },
          "502": {
            "description": "Bad Gateway",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspPaymentsErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/emsp/v1/payments/checkout": {
      "post": {
        "tags": [
          "Public API - Payments"
        ],
        "summary": "Report a session's payment status (managed networks capture automatically at stop)",
        "operationId": "PublicApi_PaymentCheckout",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CheckoutRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspPaymentsCheckoutResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspPaymentsErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmspPaymentsErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/me": {
      "get": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Operator API key context (accessible networks + granted scopes)",
        "operationId": "Cpms_GetContext",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsContextResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/networks": {
      "get": {
        "tags": [
          "CPMS API"
        ],
        "summary": "List the networks this key is authorized to operate",
        "operationId": "Cpms_ListNetworks",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsNetworkListResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/usage": {
      "get": {
        "tags": [
          "CPMS API"
        ],
        "summary": "API consumption rollup (metering) for this key's networks",
        "operationId": "Cpms_GetUsage",
        "parameters": [
          {
            "name": "days",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsUsageResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/chargers": {
      "get": {
        "tags": [
          "CPMS API"
        ],
        "summary": "List the operator's chargers (+ live status)",
        "operationId": "Cpms_ListChargers",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsChargerListResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      },
      "post": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Register (create) a charger on one of the operator's networks",
        "operationId": "Cpms_RegisterCharger",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CpmsRegisterChargerRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsLifecycleRegisterChargerResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment Required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsLifecycleUpgradeRequiredResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsLifecycleErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsLifecycleErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsLifecycleErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsLifecycleErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/sessions": {
      "get": {
        "tags": [
          "CPMS API"
        ],
        "summary": "List the operator's charging sessions",
        "operationId": "Cpms_ListSessions",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "status",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "chargerId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "from",
            "in": "query",
            "schema": {
              "format": "date-time"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsSessionListResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/locations": {
      "get": {
        "tags": [
          "CPMS API"
        ],
        "summary": "List the operator's locations/stations",
        "operationId": "Cpms_ListLocations",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsLocationListResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      },
      "post": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Create a location/site on one of the operator's networks",
        "operationId": "Cpms_CreateLocation",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CpmsCreateLocationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsLifecycleCreateLocationResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsLifecycleErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsLifecycleErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsLifecycleErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/tariffs": {
      "get": {
        "tags": [
          "CPMS API"
        ],
        "summary": "List the operator's tariffs",
        "operationId": "Cpms_ListTariffs",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsTariffListResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      },
      "post": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Create a new tariff on one of the operator's networks",
        "operationId": "Cpms_CreateTariff",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CpmsCreateTariffRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsTariffWriteCreateResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsTariffWriteErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsTariffWriteErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/chargers/{uuid}": {
      "get": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Charger detail (status, network, location, connectors)",
        "operationId": "Cpms_GetCharger",
        "parameters": [
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsChargerResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      },
      "patch": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Update charger details (status, physical reference, floor level, location)",
        "operationId": "Cpms_UpdateCharger",
        "parameters": [
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CpmsUpdateChargerRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsLifecycleUpdatedResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsLifecycleErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsLifecycleErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsLifecycleErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      },
      "delete": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Soft-delete (decommission) a charger",
        "operationId": "Cpms_DeleteCharger",
        "parameters": [
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsLifecycleDeleteChargerResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsLifecycleErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsLifecycleErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsLifecycleErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/connectors/{uuid}/status": {
      "get": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Live connector status",
        "operationId": "Cpms_GetConnectorStatus",
        "parameters": [
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsConnectorStatusResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/sessions/{id}": {
      "get": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Charging session detail (energy, cost, timing)",
        "operationId": "Cpms_GetSession",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsSessionResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/sessions/{id}/meter-values": {
      "get": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Session energy curve (meter values)",
        "description": "Returns the time-ordered OCPP meter-value samples captured during the charge — the per-session kWh consumption curve (cumulative register + instantaneous power, plus current/voltage/SoC/temperature when the charger reports them) for charging graphs and delivered-energy verification. Capped by `limit` (default 1000, max 5000); `truncated` flags when the session has more. Scoped to the key's networks.",
        "operationId": "Cpms_GetSessionMeterValues",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsSessionMeterValuesResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/locations/{id}": {
      "get": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Location/site detail",
        "operationId": "Cpms_GetLocation",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsLocationResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      },
      "put": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Update a location/site",
        "operationId": "Cpms_UpdateLocation",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CpmsUpdateLocationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsLifecycleUpdatedResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsLifecycleErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsLifecycleErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsLifecycleErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      },
      "delete": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Soft-delete a location/site (blocks if chargers attached or sessions active)",
        "operationId": "Cpms_DeleteLocation",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsLifecycleDeletedResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsLifecycleErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsLifecycleErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsLifecycleErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/tariffs/{id}": {
      "get": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Tariff detail (rates, currency)",
        "operationId": "Cpms_GetTariff",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsTariffResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/tariffs/{tariffUuid}": {
      "put": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Update tariff pricing and fields",
        "operationId": "Cpms_UpdateTariff",
        "parameters": [
          {
            "name": "tariffUuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CpmsUpdateTariffRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsTariffWriteUpdateResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsTariffWriteErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsTariffWriteErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      },
      "delete": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Soft-delete a tariff (cascade-deactivates its assignments)",
        "operationId": "Cpms_DeleteTariff",
        "parameters": [
          {
            "name": "tariffUuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsTariffWriteDeleteResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsTariffWriteErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/webhooks": {
      "post": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Create a webhook subscription for the operator's network",
        "operationId": "Cpms_CreateWebhook",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CpmsCreateWebhookRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsWebhookWriteCreateResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsWebhookWriteErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      },
      "get": {
        "tags": [
          "CPMS API"
        ],
        "summary": "List the operator's webhook subscriptions",
        "operationId": "Cpms_ListWebhooks",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsObservabilityWebhookListResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/webhooks/{webhookId}": {
      "delete": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Delete a webhook subscription owned by the operator",
        "operationId": "Cpms_DeleteWebhook",
        "parameters": [
          {
            "name": "webhookId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsWebhookWriteDeleteResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsWebhookWriteErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      },
      "patch": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Update / re-enable a webhook subscription owned by the operator",
        "operationId": "Cpms_UpdateWebhook",
        "parameters": [
          {
            "name": "webhookId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CpmsUpdateWebhookRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsObservabilityWebhookResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsObservabilityErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsObservabilityErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/connectors/{connectorUuid}": {
      "put": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Update a connector's provisioning fields (Standard, Format, PowerType, MaxVoltage, MaxAmperage, MaxPower kW, Status). Scoped to the key's networks.",
        "operationId": "Cpms_UpdateConnector",
        "parameters": [
          {
            "name": "connectorUuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateCpmsConnectorRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsConnectorWriteResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/chargers/{chargerUuid}/remote-start": {
      "post": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Operator remote-start a charging session on one of the operator's own chargers (live control)",
        "operationId": "Cpms_RemoteStart",
        "parameters": [
          {
            "name": "chargerUuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CpmsRemoteStartRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsRemoteControlStartResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/chargers/{chargerUuid}/remote-stop": {
      "post": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Operator remote-stop an active charging session on one of the operator's own chargers (live control)",
        "operationId": "Cpms_RemoteStop",
        "parameters": [
          {
            "name": "chargerUuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/CpmsRemoteStopRequest"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsRemoteControlStopResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/chargers/{chargerUuid}/reboot": {
      "post": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Operator reboot (Soft/Hard reset) one of the operator's own chargers (live control)",
        "operationId": "Cpms_Reboot",
        "parameters": [
          {
            "name": "chargerUuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/CpmsRebootRequest"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsRemoteControlRebootResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/chargers/{uuid}/connectors": {
      "post": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Add a connector to one of the operator's chargers",
        "operationId": "Cpms_AddConnector",
        "parameters": [
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CpmsAddConnectorRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsLifecycleAddConnectorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsLifecycleErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsLifecycleErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsLifecycleErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsLifecycleErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/connectors/{uuid}": {
      "delete": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Soft-delete a connector",
        "operationId": "Cpms_DeleteConnector",
        "parameters": [
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsLifecycleDeleteConnectorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsLifecycleErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsLifecycleErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsLifecycleErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/tariffs/{tariffUuid}/assign": {
      "post": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Assign a tariff to a network, location, charger, or connector",
        "operationId": "Cpms_AssignTariff",
        "parameters": [
          {
            "name": "tariffUuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CpmsAssignTariffRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsLifecycleAssignTariffResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsLifecycleErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsLifecycleErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/tariffs/{tariffUuid}/assignments": {
      "get": {
        "tags": [
          "CPMS API"
        ],
        "summary": "List active assignments for a tariff",
        "operationId": "Cpms_ListTariffAssignments",
        "parameters": [
          {
            "name": "tariffUuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsLifecycleTariffAssignmentListResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsLifecycleErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/tariffs/assignments/{assignmentId}": {
      "delete": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Detach (deactivate) a tariff assignment",
        "operationId": "Cpms_DetachTariffAssignment",
        "parameters": [
          {
            "name": "assignmentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsLifecycleDetachAssignmentResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsLifecycleErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsLifecycleErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/chargers/{chargerUuid}/unlock-connector": {
      "post": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Operator unlock a connector on one of the operator's own chargers (live control)",
        "operationId": "Cpms_UnlockConnector",
        "parameters": [
          {
            "name": "chargerUuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CpmsUnlockConnectorRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsControlUnlockResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/chargers/{chargerUuid}/change-availability": {
      "post": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Operator change a charger/connector availability on the device (Operative/Inoperative, live control)",
        "operationId": "Cpms_ChangeAvailability",
        "parameters": [
          {
            "name": "chargerUuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CpmsChangeAvailabilityRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsControlChangeAvailabilityResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/chargers/{chargerUuid}/trigger-message": {
      "post": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Operator trigger an OCPP message on one of the operator's own chargers (live control)",
        "operationId": "Cpms_TriggerMessage",
        "parameters": [
          {
            "name": "chargerUuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CpmsTriggerMessageRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsControlTriggerMessageResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/chargers/{chargerUuid}/configuration": {
      "get": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Read a charger's OCPP configuration (1.6 GetConfiguration / 2.0.1 GetVariables)",
        "operationId": "Cpms_GetConfiguration",
        "parameters": [
          {
            "name": "chargerUuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "keys",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsControlConfigurationResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      },
      "post": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Change a charger's OCPP configuration key (1.6 ChangeConfiguration / 2.0.1 SetVariables, live control)",
        "operationId": "Cpms_ChangeConfiguration",
        "parameters": [
          {
            "name": "chargerUuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChangeConfigurationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsControlChangeConfigurationResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/chargers/{chargerUuid}/variables/get": {
      "post": {
        "tags": [
          "CPMS API"
        ],
        "summary": "OCPP 2.0.1: read device-model variables (GetVariables)",
        "operationId": "Cpms_GetVariables",
        "parameters": [
          {
            "name": "chargerUuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CpmsGetVariablesRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsControlConfigurationResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/chargers/{chargerUuid}/variables/set": {
      "post": {
        "tags": [
          "CPMS API"
        ],
        "summary": "OCPP 2.0.1: write device-model variables (SetVariables, live control)",
        "operationId": "Cpms_SetVariables",
        "parameters": [
          {
            "name": "chargerUuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CpmsSetVariablesRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsControlSetVariablesResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/transactions": {
      "get": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Operator CDR / transaction ledger (paged; filters: chargerId, from, to) with cost/profit/payout fields",
        "operationId": "Cpms_ListTransactions",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "chargerId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "from",
            "in": "query",
            "schema": {
              "format": "date-time"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsBillingTransactionListResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/transactions/export": {
      "get": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Export the operator's CDRs for a date range as CSV (Form 480 / reconciliation)",
        "operationId": "Cpms_ExportTransactions",
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "schema": {
              "format": "date-time"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "format": "date-time"
            }
          },
          {
            "name": "chargerId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/transactions/{id}": {
      "get": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Operator transaction (CDR) detail with full cost breakdown, profit summary, and payout id",
        "operationId": "Cpms_GetTransaction",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsBillingTransactionResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsBillingErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/sessions/{id}/refund": {
      "post": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Refund a session's charge (reverses the operator transfer) — off-by-default money action",
        "operationId": "Cpms_RefundSession",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/CpmsRefundRequest"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsBillingRefundResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsBillingErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/sessions/{id}/force-stop": {
      "post": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Operator force-close a hung charging session (live control)",
        "operationId": "Cpms_ForceStopSession",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsBillingForceStopResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsBillingErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/sessions/{id}/waive-idle-fee": {
      "post": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Waive a session's idle fee (full or partial) — money adjustment; off-by-default",
        "operationId": "Cpms_WaiveIdleFee",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/CpmsWaiveIdleFeeRequest"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsBillingWaiveResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsBillingErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsBillingErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/smart-charging/{chargerUuid}/limit": {
      "get": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Get the effective charging limit (composite schedule) for one of the operator's connectors",
        "operationId": "Cpms_GetSmartChargingLimit",
        "parameters": [
          {
            "name": "chargerUuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "connector",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "unit",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsLoadGetLimitResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsLoadErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsLoadErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      },
      "put": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Set a per-connector charging limit (A or W) on one of the operator's chargers",
        "operationId": "Cpms_SetSmartChargingLimit",
        "parameters": [
          {
            "name": "chargerUuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CpmsSmartChargingLimitRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsLoadSetLimitResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsLoadErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsLoadErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      },
      "delete": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Clear the operator-set charging limit on one of the operator's connectors",
        "operationId": "Cpms_ClearSmartChargingLimit",
        "parameters": [
          {
            "name": "chargerUuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "connector",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsLoadClearLimitResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsLoadErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/smart-charging/{chargerUuid}/composite-schedule": {
      "get": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Read the OCPP composite schedule for one of the operator's connectors",
        "operationId": "Cpms_GetCompositeSchedule",
        "parameters": [
          {
            "name": "chargerUuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "connector",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "duration",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "unit",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsLoadCompositeScheduleResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsLoadErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsLoadErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/load-balancing/{stationOrLocationId}": {
      "get": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Read the present load-balancing allocation/cap for one of the operator's stations",
        "operationId": "Cpms_GetLoadBalancing",
        "parameters": [
          {
            "name": "stationOrLocationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsLoadBalancingResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsLoadErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      },
      "put": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Update the load-balancing configuration for one of the operator's stations",
        "operationId": "Cpms_UpdateLoadBalancing",
        "parameters": [
          {
            "name": "stationOrLocationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CpmsLoadBalancingRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsLoadBalancingUpdateResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsLoadErrorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsLoadErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/load-balancing/{stationOrLocationId}/rebalance": {
      "post": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Trigger an immediate load-balancing rebalance for one of the operator's stations",
        "operationId": "Cpms_RebalanceLoadBalancing",
        "parameters": [
          {
            "name": "stationOrLocationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "202": {
            "description": "Accepted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsLoadRebalanceResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsLoadErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/chargers/{chargerUuid}/firmware/update": {
      "post": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Apply a firmware image to one of the operator's own chargers (OTA; live control)",
        "operationId": "Cpms_UpdateFirmware",
        "parameters": [
          {
            "name": "chargerUuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/CpmsUpdateFirmwareRequest"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsFirmwareUpdateResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/chargers/{chargerUuid}/firmware/status": {
      "get": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Current firmware version + most recent firmware-update status for a charger",
        "operationId": "Cpms_GetFirmwareStatus",
        "parameters": [
          {
            "name": "chargerUuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsFirmwareStatusResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/charger-models/{modelId}/firmware": {
      "get": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Catalog of firmware images available for a charger model",
        "operationId": "Cpms_ListModelFirmware",
        "parameters": [
          {
            "name": "modelId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsFirmwareCatalogListResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/firmware": {
      "get": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Catalog of firmware images applicable to the operator's chargers",
        "operationId": "Cpms_ListFirmware",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "modelId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsFirmwareCatalogListResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/chargers/{chargerUuid}/diagnostics/fetch": {
      "post": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Ask a charger to upload its diagnostics/log file (GetDiagnostics / GetLog)",
        "operationId": "Cpms_FetchDiagnostics",
        "parameters": [
          {
            "name": "chargerUuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/CpmsFetchDiagnosticsRequest"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsFirmwareFetchDiagnosticsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          },
          "504": {
            "description": "Gateway Timeout",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/chargers/{chargerUuid}/diagnostics": {
      "get": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Charger health snapshot: last heartbeat, online, recent status/error codes",
        "operationId": "Cpms_GetDiagnostics",
        "parameters": [
          {
            "name": "chargerUuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsFirmwareDiagnosticsResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/diagnostic-files": {
      "get": {
        "tags": [
          "CPMS API"
        ],
        "summary": "List diagnostic files a charger has uploaded (requires chargerId)",
        "operationId": "Cpms_ListDiagnosticFiles",
        "parameters": [
          {
            "name": "chargerId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsFirmwareDiagnosticFilesResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/analytics/revenue": {
      "get": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Operator revenue rollup over a date range (scoped to the key's networks)",
        "operationId": "Cpms_AnalyticsRevenue",
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "schema": {
              "format": "date-time"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "format": "date-time"
            }
          },
          {
            "name": "networkId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "period",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsAnalyticsRevenueResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsAnalyticsErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/analytics/energy": {
      "get": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Operator energy (kWh) rollup over a date range",
        "operationId": "Cpms_AnalyticsEnergy",
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "schema": {
              "format": "date-time"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "format": "date-time"
            }
          },
          {
            "name": "networkId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "period",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsAnalyticsEnergyResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsAnalyticsErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/analytics/sessions": {
      "get": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Operator session-count rollup over a date range",
        "operationId": "Cpms_AnalyticsSessions",
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "schema": {
              "format": "date-time"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "format": "date-time"
            }
          },
          {
            "name": "networkId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "period",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsAnalyticsSessionsResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsAnalyticsErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/analytics/utilization": {
      "get": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Operator connector utilization rollup over a date range",
        "operationId": "Cpms_AnalyticsUtilization",
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "schema": {
              "format": "date-time"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "format": "date-time"
            }
          },
          {
            "name": "networkId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "period",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsAnalyticsUtilizationResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsAnalyticsErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/analytics/uptime": {
      "get": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Operator charger uptime / availability (SLA) snapshot",
        "operationId": "Cpms_AnalyticsUptime",
        "parameters": [
          {
            "name": "networkId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsAnalyticsUptimeResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsAnalyticsErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/analytics/kpis": {
      "get": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Operator KPI summary (revenue, energy, sessions, avg duration)",
        "operationId": "Cpms_AnalyticsKpis",
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "schema": {
              "format": "date-time"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "format": "date-time"
            }
          },
          {
            "name": "networkId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsAnalyticsKpisResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsAnalyticsErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/reports/export": {
      "get": {
        "tags": [
          "CPMS API"
        ],
        "summary": "CSV (or JSON) export of the operator's sessions/revenue for a date range",
        "operationId": "Cpms_ReportsExport",
        "parameters": [
          {
            "name": "type",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "from",
            "in": "query",
            "schema": {
              "format": "date-time"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "format": "date-time"
            }
          },
          {
            "name": "networkId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/settings": {
      "get": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Read the operator's network settings (the fields safe for self-service)",
        "operationId": "Cpms_GetSettings",
        "parameters": [
          {
            "name": "networkUuid",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsOrgSettingsResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsOrgErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      },
      "put": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Update the operator's network settings (self-service subset only)",
        "operationId": "Cpms_UpdateSettings",
        "parameters": [
          {
            "name": "networkUuid",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CpmsUpdateSettingsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsOrgSettingsUpdateResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsOrgErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/team": {
      "get": {
        "tags": [
          "CPMS API"
        ],
        "summary": "List the operator's team members",
        "operationId": "Cpms_ListTeam",
        "parameters": [
          {
            "name": "networkUuid",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsOrgTeamListResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      },
      "post": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Add an existing platform user to the operator's team",
        "operationId": "Cpms_AddTeamMember",
        "parameters": [
          {
            "name": "networkUuid",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CpmsAddTeamMemberRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsOrgAddTeamMemberResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsOrgErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsOrgErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsOrgErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/team/{id}": {
      "put": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Update a team member's role",
        "operationId": "Cpms_UpdateTeamMember",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "networkUuid",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CpmsUpdateTeamMemberRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsOrgUpdateTeamMemberResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsOrgErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      },
      "delete": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Remove a team member from the operator's network",
        "operationId": "Cpms_RemoveTeamMember",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "networkUuid",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsOrgRemoveTeamMemberResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsOrgErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/api-keys": {
      "get": {
        "tags": [
          "CPMS API"
        ],
        "summary": "List the operator's CPMS API keys (prefix/suffix only — never the secret)",
        "operationId": "Cpms_ListApiKeys",
        "parameters": [
          {
            "name": "networkUuid",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsOrgApiKeyListResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      },
      "post": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Mint a new CPMS API key (the full secret is shown ONCE in this response)",
        "operationId": "Cpms_CreateApiKey",
        "parameters": [
          {
            "name": "networkUuid",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CpmsCreateApiKeyRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsOrgCreatedApiKeyResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsOrgErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/api-keys/{id}": {
      "delete": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Revoke + soft-delete one of the operator's CPMS API keys",
        "operationId": "Cpms_RevokeApiKey",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "networkUuid",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsOrgRevokeApiKeyResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsOrgErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsOrgErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/webhooks/{webhookId}/test": {
      "post": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Send a test event to a webhook subscription",
        "operationId": "Cpms_TestWebhook",
        "parameters": [
          {
            "name": "webhookId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsObservabilityWebhookTestResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsObservabilityErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/webhooks/{webhookId}/deliveries": {
      "get": {
        "tags": [
          "CPMS API"
        ],
        "summary": "List recent delivery attempts for a webhook subscription",
        "operationId": "Cpms_ListWebhookDeliveries",
        "parameters": [
          {
            "name": "webhookId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsObservabilityDeliveryListResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsObservabilityErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/webhooks/{webhookId}/deliveries/{deliveryId}/retry": {
      "post": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Retry a webhook delivery attempt",
        "operationId": "Cpms_RetryWebhookDelivery",
        "parameters": [
          {
            "name": "webhookId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "deliveryId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "202": {
            "description": "Accepted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsObservabilityRetryResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsObservabilityErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/webhooks/event-types": {
      "get": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Catalog of available webhook event types",
        "operationId": "Cpms_GetWebhookEventTypes",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsObservabilityEventTypesResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/events/stream": {
      "get": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Operator SSE event stream (real-time updates scoped to the operator's networks)",
        "operationId": "Cpms_StreamEvents",
        "parameters": [
          {
            "name": "eventTypes",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "stationIds",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/audit-log": {
      "get": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Query the network's operator-action audit log",
        "description": "Returns the tenant-scoped audit trail of operator/API actions (create/update/delete/commands across tariffs, chargers, connectors, settings, team, API keys), newest first. Filter by category, action, resourceId, and a from/to UTC window. Page size 1–200 (default 50). The 'who did what, when, from where' feed for SOC2/ISO and compliance dashboards.",
        "operationId": "Cpms_GetAuditLog",
        "parameters": [
          {
            "name": "category",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "action",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resourceId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "from",
            "in": "query",
            "schema": {
              "format": "date-time"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "format": "date-time"
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsAuditLogListResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/wallets/credit": {
      "post": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Grant a driver wallet credit (operator-funded)",
        "description": "Adds operator-funded balance to a driver's wallet for this network (promo/loyalty/goodwill); the driver spends it on the operator's chargers. Idempotent via idempotencyKey. Not a driver cash top-up.",
        "operationId": "Cpms_WalletCredit",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WalletCreditRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/wallets/{driverId}": {
      "get": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Get a driver's wallet balance for this network",
        "operationId": "Cpms_GetDriverWallet",
        "parameters": [
          {
            "name": "driverId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/fraud/holds": {
      "get": {
        "tags": [
          "CPMS API"
        ],
        "summary": "List drivers on the operator's networks currently held for an unpaid balance",
        "operationId": "Cpms_ListFraudHolds",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsFraudHoldsResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/fraud/drivers/{driverUuid}": {
      "get": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Anti-fraud status for a driver (phone-verified, hold, outstanding balance)",
        "operationId": "Cpms_DriverFraudStatus",
        "parameters": [
          {
            "name": "driverUuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsFraudDriverStatusResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsFraudErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/fraud/drivers/{driverUuid}/clear-hold": {
      "post": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Clear a driver's fraud hold (optionally waive the outstanding balance so the live check passes)",
        "operationId": "Cpms_ClearFraudHold",
        "parameters": [
          {
            "name": "driverUuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/ClearHoldRequest"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsFraudClearHoldResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsFraudErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/limits": {
      "get": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Get provisioning caps: tier ceiling, your self-imposed cap, current usage, and remaining headroom for chargers and billable connectors",
        "operationId": "Cpms_GetProvisioningLimits",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsProvisioningLimitsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      },
      "put": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Set or clear your self-imposed charger/connector caps (full replacement; null clears; never above the tier ceiling)",
        "operationId": "Cpms_SetProvisioningLimits",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CpmsSetLimitsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsProvisioningLimitsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/limits/increase-request": {
      "post": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Request that the platform raise your tier ceiling above what your current plan allows",
        "operationId": "Cpms_RequestLimitIncrease",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CpmsLimitIncreaseRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "description": "Accepted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsLimitIncreaseResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/limits/increase-requests": {
      "get": {
        "tags": [
          "CPMS API"
        ],
        "summary": "List your tier-increase requests and their review status",
        "operationId": "Cpms_ListLimitIncreaseRequests",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsLimitIncreaseListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/manufacturers": {
      "get": {
        "tags": [
          "CPMS API"
        ],
        "summary": "List charger manufacturers (global catalog, paginated)",
        "operationId": "Cpms_ListManufacturers",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "search",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsManufacturerListResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/manufacturers/{id}": {
      "get": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Get a charger manufacturer by id",
        "operationId": "Cpms_GetManufacturer",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsManufacturerResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found"
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/charger-models": {
      "get": {
        "tags": [
          "CPMS API"
        ],
        "summary": "List charger models (global catalog, paginated; filter by manufacturer or search)",
        "operationId": "Cpms_ListChargerModels",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "search",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "manufacturerId",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsChargerModelListResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/charger-models/{id}": {
      "get": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Get a charger model by id (with manufacturer details)",
        "operationId": "Cpms_GetChargerModel",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsChargerModelResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found"
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/chargers/{chargerUuid}/commands": {
      "get": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Recent OCPP commands sent to one of the operator's chargers, with results",
        "operationId": "Cpms_GetChargerCommandHistory",
        "parameters": [
          {
            "name": "chargerUuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsChargerCommandListResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/sessions/{id}/events": {
      "get": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Recorded lifecycle/domain events for one of the operator's charging sessions",
        "operationId": "Cpms_GetSessionEvents",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsSessionEventListResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/chargers/{chargerUuid}/device-model": {
      "get": {
        "tags": [
          "CPMS API"
        ],
        "summary": "OCPP 2.0.1 device-model variables last reported by one of the operator's chargers",
        "operationId": "Cpms_GetChargerDeviceModel",
        "parameters": [
          {
            "name": "chargerUuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "component",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "variable",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "attributeType",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "evseId",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsDeviceModelResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/chargers/{chargerUuid}/charging-profiles": {
      "get": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Smart-charging profiles currently assigned to one of the operator's chargers",
        "operationId": "Cpms_GetChargerChargingProfiles",
        "parameters": [
          {
            "name": "chargerUuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsChargingProfileListResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/chargers/{chargerUuid}/monitoring/events": {
      "get": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Variable-monitoring events reported by one of the operator's chargers",
        "operationId": "Cpms_GetChargerMonitoringEvents",
        "parameters": [
          {
            "name": "chargerUuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "since",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "trigger",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "component",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsMonitoringEventListResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/chargers/{chargerUuid}/certificates": {
      "get": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Certificate metadata (serial, CN, validity, status) for one of the operator's chargers",
        "operationId": "Cpms_GetChargerCertificates",
        "parameters": [
          {
            "name": "chargerUuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "status",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsCertificateListResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/chargers/{chargerUuid}/charging-profiles/query": {
      "post": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Live GetChargingProfiles — ask an OCPP 2.0.1 charger to report its installed profiles now",
        "operationId": "Cpms_QueryChargingProfiles",
        "parameters": [
          {
            "name": "chargerUuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/CpmsChargingProfileQueryRequest"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsOcppQueryResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          },
          "504": {
            "description": "Gateway Timeout",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/chargers/{chargerUuid}/device-model/report": {
      "post": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Live GetBaseReport — ask an OCPP 2.0.1 charger to re-report its full device model now",
        "operationId": "Cpms_RequestDeviceModelReport",
        "parameters": [
          {
            "name": "chargerUuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsOcppQueryResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          },
          "504": {
            "description": "Gateway Timeout",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/chargers/{chargerUuid}/display-messages": {
      "get": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Live GetDisplayMessages — list messages currently shown on an OCPP 2.0.1 charger",
        "operationId": "Cpms_GetDisplayMessages",
        "parameters": [
          {
            "name": "chargerUuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "priority",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "state",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsOcppQueryResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          },
          "504": {
            "description": "Gateway Timeout",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      },
      "post": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Show a message on an OCPP 2.0.1 charger's display (SetDisplayMessage)",
        "operationId": "Cpms_SetDisplayMessage",
        "parameters": [
          {
            "name": "chargerUuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/CpmsSetDisplayMessageRequest"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsOcppQueryResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          },
          "504": {
            "description": "Gateway Timeout",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/chargers/{chargerUuid}/display-messages/{messageId}": {
      "delete": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Clear a message from an OCPP 2.0.1 charger's display (ClearDisplayMessage)",
        "operationId": "Cpms_ClearDisplayMessage",
        "parameters": [
          {
            "name": "chargerUuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "messageId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsOcppQueryResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          },
          "504": {
            "description": "Gateway Timeout",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/chargers/{chargerUuid}/monitoring/set": {
      "post": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Install variable monitors on an OCPP 2.0.1 charger (SetVariableMonitoring)",
        "operationId": "Cpms_SetVariableMonitoring",
        "parameters": [
          {
            "name": "chargerUuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/CpmsSetVariableMonitoringRequest"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsOcppQueryResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          },
          "504": {
            "description": "Gateway Timeout",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/cpms/v1/chargers/{chargerUuid}/monitoring/{monitorId}": {
      "delete": {
        "tags": [
          "CPMS API"
        ],
        "summary": "Clear a variable monitor by id on an OCPP 2.0.1 charger (ClearVariableMonitoring)",
        "operationId": "Cpms_ClearVariableMonitoring",
        "parameters": [
          {
            "name": "chargerUuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "monitorId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CpmsOcppQueryResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          },
          "504": {
            "description": "Gateway Timeout",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/ocpi/{version}/credentials": {
      "get": {
        "tags": [
          "OCPI Credentials"
        ],
        "description": "Get credentials for this CPO",
        "operationId": "GetOCPICredentials",
        "parameters": [
          {
            "name": "version",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OCPIResponseOfCredentialsDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OCPIError"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      },
      "post": {
        "tags": [
          "OCPI Credentials"
        ],
        "description": "Register new partner credentials",
        "operationId": "RegisterOCPICredentials",
        "parameters": [
          {
            "name": "version",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OCPIResponseOfCredentialsDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OCPIError"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      },
      "put": {
        "tags": [
          "OCPI Credentials"
        ],
        "description": "Update existing partner credentials",
        "operationId": "UpdateOCPICredentials",
        "parameters": [
          {
            "name": "version",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CredentialsDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OCPIResponseOfCredentialsDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OCPIError"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/ocpi/{version}/credentials/{country_code}/{party_id}": {
      "delete": {
        "tags": [
          "OCPI Credentials"
        ],
        "description": "Delete partner credentials",
        "operationId": "DeleteOCPICredentials",
        "parameters": [
          {
            "name": "version",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "country_code",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "party_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OCPIResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OCPIError"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/ocpi/cpo/2.2/locations": {
      "get": {
        "tags": [
          "OCPI Locations"
        ],
        "description": "Get all locations with optional filtering",
        "operationId": "GetOCPILocations",
        "parameters": [
          {
            "name": "date_from",
            "in": "query",
            "schema": {
              "format": "date-time"
            }
          },
          {
            "name": "date_to",
            "in": "query",
            "schema": {
              "format": "date-time"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OCPIResponseOfListOfLocationDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OCPIError"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/ocpi/cpo/2.2/locations/{location_id}": {
      "get": {
        "tags": [
          "OCPI Locations"
        ],
        "description": "Get a specific location by ID",
        "operationId": "GetOCPILocationById",
        "parameters": [
          {
            "name": "location_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OCPIResponseOfLocationDto"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OCPIError"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      },
      "put": {
        "tags": [
          "OCPI Locations"
        ],
        "description": "Create or replace a location",
        "operationId": "PutOCPILocation",
        "parameters": [
          {
            "name": "location_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LocationDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OCPIResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OCPIError"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      },
      "patch": {
        "tags": [
          "OCPI Locations"
        ],
        "description": "Partially update a location",
        "operationId": "PatchOCPILocation",
        "parameters": [
          {
            "name": "location_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OCPIResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OCPIError"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/ocpi/cpo/2.2/locations/evse/{evse_uid}": {
      "get": {
        "tags": [
          "OCPI Locations"
        ],
        "description": "Get a specific EVSE by its UID only",
        "operationId": "GetOCPIEvseById",
        "parameters": [
          {
            "name": "evse_uid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OCPIResponseOfEvseDto"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OCPIError"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/ocpi/cpo/2.2/locations/{location_id}/{evse_uid}": {
      "get": {
        "tags": [
          "OCPI Locations"
        ],
        "description": "Get a specific EVSE at a location",
        "operationId": "GetOCPIEvse",
        "parameters": [
          {
            "name": "location_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "evse_uid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OCPIResponseOfEvseDto"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OCPIError"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      },
      "put": {
        "tags": [
          "OCPI Locations"
        ],
        "description": "Create or replace an EVSE",
        "operationId": "PutOCPIEvse",
        "parameters": [
          {
            "name": "location_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "evse_uid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EvseDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OCPIResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OCPIError"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      },
      "patch": {
        "tags": [
          "OCPI Locations"
        ],
        "description": "Partially update an EVSE",
        "operationId": "PatchOCPIEvse",
        "parameters": [
          {
            "name": "location_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "evse_uid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OCPIResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OCPIError"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/ocpi/cpo/2.2/locations/{location_id}/{evse_uid}/{connector_id}": {
      "get": {
        "tags": [
          "OCPI Locations"
        ],
        "description": "Get a specific connector at an EVSE",
        "operationId": "GetOCPIConnector",
        "parameters": [
          {
            "name": "location_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "evse_uid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "connector_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OCPIResponseOfConnectorDto"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OCPIError"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      },
      "put": {
        "tags": [
          "OCPI Locations"
        ],
        "description": "Create or replace a connector",
        "operationId": "PutOCPIConnector",
        "parameters": [
          {
            "name": "location_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "evse_uid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "connector_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ConnectorDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OCPIResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OCPIError"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      },
      "patch": {
        "tags": [
          "OCPI Locations"
        ],
        "description": "Partially update a connector",
        "operationId": "PatchOCPIConnector",
        "parameters": [
          {
            "name": "location_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "evse_uid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "connector_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OCPIResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OCPIError"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/ocpi/cpo/2.2/sessions": {
      "get": {
        "tags": [
          "OCPI - Sessions"
        ],
        "operationId": "GetOCPISessions",
        "parameters": [
          {
            "name": "date_from",
            "in": "query",
            "schema": {
              "format": "date-time"
            }
          },
          {
            "name": "date_to",
            "in": "query",
            "schema": {
              "format": "date-time"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OCPIPaginatedResponseOfSessionDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OCPIError"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/ocpi/cpo/2.2/sessions/{country_code}/{party_id}/{session_id}": {
      "get": {
        "tags": [
          "OCPI - Sessions"
        ],
        "operationId": "GetOCPISessionById",
        "parameters": [
          {
            "name": "country_code",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "party_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "session_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OCPIResponseOfSessionDto"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OCPIError"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      },
      "patch": {
        "tags": [
          "OCPI - Sessions"
        ],
        "operationId": "UpdateOCPISession",
        "parameters": [
          {
            "name": "country_code",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "party_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "session_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SessionUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OCPIResponseOfSessionDto"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OCPIError"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OCPIError"
                }
              }
            }
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/ocpi/cpo/2.2/cdrs": {
      "get": {
        "tags": [
          "OCPI 2.2 - CDRs"
        ],
        "operationId": "GetOCPICDRs",
        "parameters": [
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "date_from",
            "in": "query",
            "schema": {
              "format": "date-time"
            }
          },
          {
            "name": "date_to",
            "in": "query",
            "schema": {
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/ocpi/cpo/2.2/cdrs/{country_code}/{party_id}/{cdr_id}": {
      "get": {
        "tags": [
          "OCPI 2.2 - CDRs"
        ],
        "operationId": "GetOCPICDRById",
        "parameters": [
          {
            "name": "country_code",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "party_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cdr_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/ocpi/cpo/2.2/tokens": {
      "get": {
        "tags": [
          "OCPI 2.2 - Tokens"
        ],
        "operationId": "GetOCPITokens",
        "parameters": [
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "date_from",
            "in": "query",
            "schema": {
              "format": "date-time"
            }
          },
          {
            "name": "date_to",
            "in": "query",
            "schema": {
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/ocpi/cpo/2.2/tokens/{token_uid}": {
      "get": {
        "tags": [
          "OCPI 2.2 - Tokens"
        ],
        "operationId": "GetOCPITokenByUid",
        "parameters": [
          {
            "name": "token_uid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/ocpi/cpo/2.2/tokens/{country_code}/{party_id}/{token_uid}": {
      "put": {
        "tags": [
          "OCPI 2.2 - Tokens"
        ],
        "operationId": "UpdateOCPIToken",
        "parameters": [
          {
            "name": "country_code",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "party_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "token_uid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/ocpi/cpo/2.2/commands/{command}/{command_id}": {
      "post": {
        "tags": [
          "OCPI 2.2 - Commands"
        ],
        "operationId": "ReceiveOCPICommand",
        "parameters": [
          {
            "name": "command",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "command_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/ocpi/cpo/2.2/commands/{command_id}": {
      "get": {
        "tags": [
          "OCPI 2.2 - Commands"
        ],
        "operationId": "GetOCPICommandResult",
        "parameters": [
          {
            "name": "command_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/ocpi/cpo/2.2/tariffs": {
      "get": {
        "tags": [
          "OCPI 2.2 - Tariffs"
        ],
        "operationId": "GetOCPITariffs_v0",
        "parameters": [
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "date_from",
            "in": "query",
            "schema": {
              "format": "date-time"
            }
          },
          {
            "name": "date_to",
            "in": "query",
            "schema": {
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/ocpi/cpo/2.2/tariffs/{tariff_id}": {
      "get": {
        "tags": [
          "OCPI 2.2 - Tariffs"
        ],
        "operationId": "GetOCPITariffById_v0",
        "parameters": [
          {
            "name": "tariff_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/ocpi/2.2.1/tariffs": {
      "get": {
        "tags": [
          "OCPI 2.2 - Tariffs"
        ],
        "operationId": "GetOCPITariffs_v1",
        "parameters": [
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "date_from",
            "in": "query",
            "schema": {
              "format": "date-time"
            }
          },
          {
            "name": "date_to",
            "in": "query",
            "schema": {
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/ocpi/2.2.1/tariffs/{tariff_id}": {
      "get": {
        "tags": [
          "OCPI 2.2 - Tariffs"
        ],
        "operationId": "GetOCPITariffById_v1",
        "parameters": [
          {
            "name": "tariff_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/ocpi/2.2/tariffs": {
      "get": {
        "tags": [
          "OCPI 2.2 - Tariffs"
        ],
        "operationId": "GetOCPITariffs_v2",
        "parameters": [
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "date_from",
            "in": "query",
            "schema": {
              "format": "date-time"
            }
          },
          {
            "name": "date_to",
            "in": "query",
            "schema": {
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/ocpi/2.2/tariffs/{tariff_id}": {
      "get": {
        "tags": [
          "OCPI 2.2 - Tariffs"
        ],
        "operationId": "GetOCPITariffById_v2",
        "parameters": [
          {
            "name": "tariff_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      }
    },
    "/ocpi/cpo/2.2/chargingprofiles/{session_id}": {
      "get": {
        "tags": [
          "OCPI 2.2 - ChargingProfiles"
        ],
        "operationId": "GetChargingProfile",
        "parameters": [
          {
            "name": "session_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "duration",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "response_url",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      },
      "put": {
        "tags": [
          "OCPI 2.2 - ChargingProfiles"
        ],
        "operationId": "SetChargingProfile",
        "parameters": [
          {
            "name": "session_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetChargingProfileDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      },
      "delete": {
        "tags": [
          "OCPI 2.2 - ChargingProfiles"
        ],
        "operationId": "ClearChargingProfile",
        "parameters": [
          {
            "name": "session_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "response_url",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          { }
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "AcceptInvitationRequest": {
        "required": [
          "identityProviderGuid"
        ],
        "type": "object",
        "properties": {
          "identityProviderGuid": {
            "type": "string"
          },
          "email": {
            "type": [
              "null",
              "string"
            ]
          },
          "firstName": {
            "type": [
              "null",
              "string"
            ]
          },
          "lastName": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "AddAddOnRequest": {
        "required": [
          "code"
        ],
        "type": "object",
        "properties": {
          "code": {
            "type": "string"
          },
          "quantity": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "AdditionalGeoLocationDto": {
        "type": "object",
        "properties": {
          "coordinates": {
            "$ref": "#/components/schemas/GeoLocationDto"
          },
          "name": {
            "$ref": "#/components/schemas/DisplayTextDto"
          }
        }
      },
      "ApiKeyType": {
        "enum": [
          "Rest",
          "Ocpi",
          "Both"
        ]
      },
      "ApiKeyVisibility": {
        "enum": [
          "Private",
          "Public"
        ]
      },
      "ApplyFirmwareRequest": {
        "required": [
          "firmwareVersionId"
        ],
        "type": "object",
        "properties": {
          "firmwareVersionId": {
            "type": "string",
            "format": "uuid"
          }
        }
      },
      "AssignChargersRequest": {
        "required": [
          "chargerIds"
        ],
        "type": "object",
        "properties": {
          "chargerIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            }
          }
        }
      },
      "AssignPlanRequest": {
        "type": "object",
        "properties": {
          "planCode": {
            "type": "string"
          },
          "status": {
            "type": [
              "null",
              "string"
            ]
          },
          "source": {
            "type": [
              "null",
              "string"
            ]
          },
          "stripeSubscriptionId": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "AssignTariffRequest": {
        "type": "object",
        "properties": {
          "locationId": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "chargerId": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "connectorId": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "locationUuid": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "chargerUuid": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "connectorUuid": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          }
        }
      },
      "AthmIngestRequest": {
        "required": [
          "chargerUid",
          "athmReference",
          "amountCents"
        ],
        "type": "object",
        "properties": {
          "chargerUid": {
            "type": "string"
          },
          "athmReference": {
            "type": "string"
          },
          "amountCents": {
            "type": "integer",
            "format": "int32"
          },
          "connectorId": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "driverEmail": {
            "type": [
              "null",
              "string"
            ]
          },
          "driverPhone": {
            "type": [
              "null",
              "string"
            ]
          },
          "energyKwh": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "durationSeconds": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "startedAt": { },
          "endedAt": { }
        }
      },
      "AttachDiscountRequest": {
        "required": [
          "couponId"
        ],
        "type": "object",
        "properties": {
          "couponId": {
            "type": "string"
          }
        }
      },
      "AuthMethod": {
        "enum": [
          "AUTH_REQUEST",
          "COMMAND",
          "WHITELIST"
        ]
      },
      "BillingPortalRequest": {
        "type": "object",
        "properties": {
          "returnUrl": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "BusinessDetailsDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "website": {
            "type": [
              "null",
              "string"
            ]
          },
          "logo": {
            "$ref": "#/components/schemas/LogoDto"
          }
        }
      },
      "CdrDimensionDto": {
        "type": "object",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/CdrDimensionType"
          },
          "volume": {
            "type": "number",
            "format": "double"
          }
        }
      },
      "CdrDimensionType": {
        "enum": [
          "CURRENT",
          "ENERGY",
          "ENERGY_EXPORT",
          "ENERGY_IMPORT",
          "MAX_CURRENT",
          "MIN_CURRENT",
          "MAX_POWER",
          "MIN_POWER",
          "PARKING_TIME",
          "POWER",
          "RESERVATION_TIME",
          "STATE_OF_CHARGE",
          "TIME"
        ]
      },
      "CdrTokenDto": {
        "type": "object",
        "properties": {
          "uid": {
            "type": [
              "null",
              "string"
            ]
          },
          "type": {
            "$ref": "#/components/schemas/TokenType"
          },
          "contract_id": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "ChangeConfigurationRequest": {
        "required": [
          "key",
          "value"
        ],
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "value": {
            "type": "string"
          }
        }
      },
      "ChangeProfileRequest": {
        "required": [
          "targetProfile"
        ],
        "type": "object",
        "properties": {
          "targetProfile": {
            "type": "integer",
            "format": "int32"
          },
          "password": {
            "type": [
              "null",
              "string"
            ]
          },
          "forceReconnect": {
            "type": "boolean"
          }
        }
      },
      "ChargingPeriodDto": {
        "type": "object",
        "properties": {
          "start_date_time": {
            "format": "date-time"
          },
          "dimensions": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/CdrDimensionDto"
            }
          },
          "tariff_id": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "ChargingProfile": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "stackLevel": {
            "type": "integer",
            "format": "int32"
          },
          "chargingProfilePurpose": {
            "type": "string"
          },
          "chargingProfileKind": {
            "type": "string"
          },
          "recurrencyKind": {
            "type": "string"
          },
          "validFrom": {
            "type": "string"
          },
          "validTo": {
            "type": "string"
          },
          "chargingSchedule": {
            "$ref": "#/components/schemas/ChargingSchedule"
          }
        }
      },
      "ChargingProfileDto": {
        "type": "object",
        "properties": {
          "start_date_time": {
            "format": "date-time"
          },
          "duration": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "charging_rate_unit": {
            "type": [
              "null",
              "string"
            ]
          },
          "min_charging_rate": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "charging_profile_period": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/ChargingProfilePeriodDto"
            }
          }
        }
      },
      "ChargingProfilePeriodDto": {
        "type": "object",
        "properties": {
          "start_period": {
            "type": "integer",
            "format": "int32"
          },
          "limit": {
            "type": "number",
            "format": "double"
          }
        }
      },
      "ChargingSchedule": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "startSchedule": {
            "type": "string"
          },
          "duration": {
            "type": "integer",
            "format": "int32"
          },
          "chargingRateUnit": {
            "type": "string"
          },
          "minChargingRate": {
            "type": "integer",
            "format": "int32"
          },
          "chargingSchedulePeriods": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ChargingSchedulePeriod"
            }
          }
        }
      },
      "ChargingSchedulePeriod": {
        "type": "object",
        "properties": {
          "startPeriod": {
            "type": "integer",
            "format": "int32"
          },
          "limit": {
            "type": "number",
            "format": "double"
          },
          "numberPhases": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "CheckoutRequest": {
        "type": "object",
        "properties": {
          "sessionId": {
            "type": "string",
            "format": "uuid"
          },
          "amount": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "currency": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "CheckoutSessionRequest": {
        "type": "object",
        "properties": {
          "successUrl": {
            "type": [
              "null",
              "string"
            ]
          },
          "cancelUrl": {
            "type": [
              "null",
              "string"
            ]
          },
          "region": {
            "type": [
              "null",
              "string"
            ]
          },
          "setupOnly": {
            "type": "boolean"
          },
          "planType": {
            "type": [
              "null",
              "string"
            ]
          },
          "trialDays": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "additionalL2Count": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "additionalL3Count": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "billingInterval": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "ClearChargingProfileRequest": {
        "type": "object",
        "properties": {
          "chargingProfilePurpose": {
            "type": "string"
          },
          "stackLevel": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "chargingProfileId": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "evseId": {
            "$ref": "#/components/schemas/EVSEData"
          }
        }
      },
      "ClearHoldBody": {
        "type": "object",
        "properties": {
          "waive": {
            "type": "boolean"
          }
        }
      },
      "ClearHoldRequest": {
        "type": "object",
        "properties": {
          "waive": {
            "type": "boolean"
          }
        }
      },
      "ComponentData": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "instance": {
            "type": "string"
          },
          "evseId": {
            "type": "string"
          },
          "connectorId": {
            "type": "string"
          }
        }
      },
      "ConnectorDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": [
              "null",
              "string"
            ]
          },
          "standard": {
            "type": [
              "null",
              "string"
            ]
          },
          "format": {
            "type": [
              "null",
              "string"
            ]
          },
          "power_type": {
            "type": [
              "null",
              "string"
            ]
          },
          "status": {
            "type": [
              "null",
              "string"
            ]
          },
          "max_voltage": {
            "type": "integer",
            "format": "int32"
          },
          "max_amperage": {
            "type": "integer",
            "format": "int32"
          },
          "max_electric_power": {
            "type": "integer",
            "format": "int32"
          },
          "tariff_ids": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            }
          },
          "terms_and_conditions": {
            "type": [
              "null",
              "string"
            ]
          },
          "last_updated": {
            "format": "date-time"
          }
        }
      },
      "CpmsAddConnectorRequest": {
        "type": "object",
        "properties": {
          "standard": {
            "type": [
              "null",
              "string"
            ]
          },
          "format": {
            "type": [
              "null",
              "string"
            ]
          },
          "powerType": {
            "type": [
              "null",
              "string"
            ]
          },
          "connectorNumber": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "maxVoltage": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "maxAmperage": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "maxPower": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          }
        }
      },
      "CpmsAddTeamMemberRequest": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string"
          },
          "role": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "CpmsAnalyticsEnergy": {
        "type": "object",
        "properties": {
          "metric": {
            "type": "string",
            "description": "Always \"energy\".",
            "example": "energy"
          },
          "period": {
            "type": "string",
            "description": "Grouping period requested.",
            "example": "day"
          },
          "from": {
            "description": "UTC start of the window.",
            "format": "date-time",
            "example": "2026-05-21T00:00:00Z"
          },
          "to": {
            "description": "UTC end of the window.",
            "format": "date-time",
            "example": "2026-06-20T00:00:00Z"
          },
          "totalEnergyKwh": {
            "type": "number",
            "description": "Total energy across all targeted networks (kWh), rounded to 2 decimals.",
            "format": "double",
            "example": 54210.4
          },
          "networkCount": {
            "type": "integer",
            "description": "Number of networks included in this rollup.",
            "format": "int32",
            "example": 2
          },
          "networks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CpmsAnalyticsNetworkRollup"
            },
            "description": "Per-network energy rollups."
          }
        }
      },
      "CpmsAnalyticsEnergyResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsAnalyticsEnergy"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-20T18:42:09Z"
          }
        }
      },
      "CpmsAnalyticsErrorResponse": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "description": "Stable machine-readable error code (duplicated as `code`).",
            "example": "not_found"
          },
          "code": {
            "type": "string",
            "description": "Stable machine-readable error code.",
            "example": "not_found"
          },
          "message": {
            "type": "string",
            "description": "Human-readable explanation of the error.",
            "example": "Network 'c0ffee00-1234-4567-89ab-cdef01234567' not found"
          }
        }
      },
      "CpmsAnalyticsKpis": {
        "type": "object",
        "properties": {
          "metric": {
            "type": "string",
            "description": "Always \"kpis\".",
            "example": "kpis"
          },
          "from": {
            "description": "UTC start of the window.",
            "format": "date-time",
            "example": "2026-05-21T00:00:00Z"
          },
          "to": {
            "description": "UTC end of the window.",
            "format": "date-time",
            "example": "2026-06-20T00:00:00Z"
          },
          "totalSessions": {
            "type": "integer",
            "description": "Total sessions in the window across the targeted networks.",
            "format": "int32",
            "example": 7421
          },
          "totalEnergyKwh": {
            "type": "number",
            "description": "Total energy delivered (kWh), rounded to 2 decimals.",
            "format": "double",
            "example": 54210.4
          },
          "totalRevenue": {
            "type": "number",
            "description": "Total revenue, rounded to 2 decimals.",
            "format": "double",
            "example": 18432.55
          },
          "avgDurationMinutes": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "description": "Average completed-session duration in minutes, rounded to 1 decimal.",
            "format": "double",
            "example": 46.7
          },
          "networkCount": {
            "type": "integer",
            "description": "Number of networks included in the summary.",
            "format": "int32",
            "example": 2
          }
        }
      },
      "CpmsAnalyticsKpisResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsAnalyticsKpis"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-20T18:42:09Z"
          }
        }
      },
      "CpmsAnalyticsNetworkRollup": {
        "type": "object",
        "properties": {
          "networkId": {
            "type": "string",
            "description": "UUID of the network this rollup belongs to.",
            "format": "uuid",
            "example": "c0ffee00-1234-4567-89ab-cdef01234567"
          },
          "rollup": {
            "description": "The metric rollup for this network as produced by the analytics engine (time-series + summary). Shape depends on the metric; may be null."
          }
        }
      },
      "CpmsAnalyticsRevenue": {
        "type": "object",
        "properties": {
          "metric": {
            "type": "string",
            "description": "Always \"revenue\".",
            "example": "revenue"
          },
          "period": {
            "type": "string",
            "description": "Grouping period requested (day | week | month).",
            "example": "day"
          },
          "from": {
            "description": "UTC start of the window (defaults to 30 days before `to`).",
            "format": "date-time",
            "example": "2026-05-21T00:00:00Z"
          },
          "to": {
            "description": "UTC end of the window (defaults to now).",
            "format": "date-time",
            "example": "2026-06-20T00:00:00Z"
          },
          "totalRevenue": {
            "type": "number",
            "description": "Total revenue across all targeted networks, rounded to 2 decimals.",
            "format": "double",
            "example": 18432.55
          },
          "networkCount": {
            "type": "integer",
            "description": "Number of networks included in this rollup.",
            "format": "int32",
            "example": 2
          },
          "networks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CpmsAnalyticsNetworkRollup"
            },
            "description": "Per-network revenue rollups."
          }
        }
      },
      "CpmsAnalyticsRevenueResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsAnalyticsRevenue"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-20T18:42:09Z"
          }
        }
      },
      "CpmsAnalyticsSessions": {
        "type": "object",
        "properties": {
          "metric": {
            "type": "string",
            "description": "Always \"sessions\".",
            "example": "sessions"
          },
          "period": {
            "type": "string",
            "description": "Grouping period requested.",
            "example": "day"
          },
          "from": {
            "description": "UTC start of the window.",
            "format": "date-time",
            "example": "2026-05-21T00:00:00Z"
          },
          "to": {
            "description": "UTC end of the window.",
            "format": "date-time",
            "example": "2026-06-20T00:00:00Z"
          },
          "totalSessions": {
            "type": "integer",
            "description": "Total session count across all targeted networks.",
            "format": "int64",
            "example": 7421
          },
          "networkCount": {
            "type": "integer",
            "description": "Number of networks included in this rollup.",
            "format": "int32",
            "example": 2
          },
          "networks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CpmsAnalyticsNetworkRollup"
            },
            "description": "Per-network session rollups."
          }
        }
      },
      "CpmsAnalyticsSessionsResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsAnalyticsSessions"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-20T18:42:09Z"
          }
        }
      },
      "CpmsAnalyticsUptime": {
        "type": "object",
        "properties": {
          "metric": {
            "type": "string",
            "description": "Always \"uptime\".",
            "example": "uptime"
          },
          "totalChargers": {
            "type": "integer",
            "description": "Total non-deleted chargers across the targeted networks.",
            "format": "int32",
            "example": 84
          },
          "available": {
            "type": "integer",
            "description": "Chargers reporting AVAILABLE across all targeted networks.",
            "format": "int32",
            "example": 60
          },
          "charging": {
            "type": "integer",
            "description": "Chargers reporting CHARGING across all targeted networks.",
            "format": "int32",
            "example": 16
          },
          "offline": {
            "type": "integer",
            "description": "Offline chargers across all targeted networks.",
            "format": "int32",
            "example": 8
          },
          "uptimePercent": {
            "type": "number",
            "description": "\"In service\" (available + charging) as a percentage of total, rounded to 1 decimal.",
            "format": "double",
            "example": 90.5
          },
          "offlinePercent": {
            "type": "number",
            "description": "Offline chargers as a percentage of total, rounded to 1 decimal.",
            "format": "double",
            "example": 9.5
          },
          "networkCount": {
            "type": "integer",
            "description": "Number of networks included in the snapshot.",
            "format": "int32",
            "example": 2
          },
          "networks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CpmsAnalyticsUptimeNetwork"
            },
            "description": "Per-network availability breakdowns."
          }
        }
      },
      "CpmsAnalyticsUptimeNetwork": {
        "type": "object",
        "properties": {
          "networkId": {
            "type": [
              "null",
              "string"
            ],
            "description": "UUID of the network, or null if it could not be resolved.",
            "format": "uuid",
            "example": "c0ffee00-1234-4567-89ab-cdef01234567"
          },
          "totalChargers": {
            "type": "integer",
            "description": "Total non-deleted chargers on this network.",
            "format": "int32",
            "example": 42
          },
          "available": {
            "type": "integer",
            "description": "Chargers reporting AVAILABLE.",
            "format": "int32",
            "example": 30
          },
          "charging": {
            "type": "integer",
            "description": "Chargers reporting CHARGING.",
            "format": "int32",
            "example": 8
          },
          "offline": {
            "type": "integer",
            "description": "Chargers neither AVAILABLE nor CHARGING (total minus available minus charging).",
            "format": "int32",
            "example": 4
          },
          "availablePercent": {
            "type": "number",
            "description": "Available chargers as a percentage of total, rounded to 1 decimal.",
            "format": "double",
            "example": 71.4
          },
          "inUsePercent": {
            "type": "number",
            "description": "Charging chargers as a percentage of total, rounded to 1 decimal.",
            "format": "double",
            "example": 19
          },
          "offlinePercent": {
            "type": "number",
            "description": "Offline chargers as a percentage of total, rounded to 1 decimal.",
            "format": "double",
            "example": 9.5
          }
        }
      },
      "CpmsAnalyticsUptimeResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsAnalyticsUptime"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-20T18:42:09Z"
          }
        }
      },
      "CpmsAnalyticsUtilization": {
        "type": "object",
        "properties": {
          "metric": {
            "type": "string",
            "description": "Always \"utilization\".",
            "example": "utilization"
          },
          "period": {
            "type": "string",
            "description": "Grouping period requested.",
            "example": "day"
          },
          "from": {
            "description": "UTC start of the window.",
            "format": "date-time",
            "example": "2026-05-21T00:00:00Z"
          },
          "to": {
            "description": "UTC end of the window.",
            "format": "date-time",
            "example": "2026-06-20T00:00:00Z"
          },
          "averageUtilization": {
            "type": "number",
            "description": "Mean connector utilization (percent) across the targeted networks, rounded to 2 decimals.",
            "format": "double",
            "example": 37.42
          },
          "networkCount": {
            "type": "integer",
            "description": "Number of networks included in this rollup.",
            "format": "int32",
            "example": 2
          },
          "networks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CpmsAnalyticsNetworkRollup"
            },
            "description": "Per-network utilization rollups."
          }
        }
      },
      "CpmsAnalyticsUtilizationResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsAnalyticsUtilization"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-20T18:42:09Z"
          }
        }
      },
      "CpmsAssignTariffRequest": {
        "type": "object",
        "properties": {
          "locationUuid": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "chargerUuid": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "connectorUuid": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          }
        }
      },
      "CpmsAuditLogEntry": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Monotonic audit-log entry id.",
            "format": "int64",
            "example": 80421
          },
          "category": {
            "type": "string",
            "description": "Resource category the action touched (e.g. charger, station, tariff, settings, team, api_key, connector, ocpi).",
            "example": "tariff"
          },
          "action": {
            "type": "string",
            "description": "Operation performed (e.g. created, updated, deleted, enabled, disabled, command_sent, remote_start).",
            "example": "updated"
          },
          "resourceId": {
            "type": [
              "null",
              "string"
            ],
            "description": "Identifier of the affected resource (UUID/UID), or null when not resource-specific.",
            "example": "5e6f1a2b-3c4d-4e5f-8a9b-0c1d2e3f4a5b"
          },
          "resourceName": {
            "type": [
              "null",
              "string"
            ],
            "description": "Human-readable label for the affected resource, or null.",
            "example": "Standard AC"
          },
          "description": {
            "type": "string",
            "description": "Human-readable summary of the change.",
            "example": "Tariff pricing updated"
          },
          "details": {
            "type": [
              "null",
              "string"
            ],
            "description": "Optional JSON string with field-level deltas, e.g. {\"field\":\"energyRate\",\"from\":0.30,\"to\":0.35}.",
            "example": "{\"field\":\"energyRate\",\"from\":0.30,\"to\":0.35}"
          },
          "userId": {
            "type": [
              "null",
              "string"
            ],
            "description": "UUID of the user who performed the action, or null for system/service actions.",
            "format": "uuid",
            "example": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaa001"
          },
          "userName": {
            "type": [
              "null",
              "string"
            ],
            "description": "Display name / email of the actor, or null.",
            "example": "ops@acme-ev.com"
          },
          "ipAddress": {
            "type": [
              "null",
              "string"
            ],
            "description": "Source IP the action was made from, or null.",
            "example": "203.0.113.24"
          },
          "timestamp": {
            "description": "UTC time the action occurred.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "CpmsAuditLogListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CpmsAuditLogEntry"
            },
            "description": "The page of audit-log entries, most recent first."
          },
          "pagination": {
            "$ref": "#/components/schemas/CpmsPagination"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "CpmsBillingCostBreakdown": {
        "type": "object",
        "properties": {
          "energyCost": {
            "type": "number",
            "description": "Operator cost attributable to delivered energy.",
            "format": "double",
            "example": 4.1
          },
          "timeCost": {
            "type": "number",
            "description": "Operator cost attributable to occupancy time.",
            "format": "double",
            "example": 0
          },
          "sessionFee": {
            "type": "number",
            "description": "Fixed per-session cost component.",
            "format": "double",
            "example": 0.5
          },
          "processingFees": {
            "type": "number",
            "description": "Payment-processing fees borne for this CDR.",
            "format": "double",
            "example": 0.41
          },
          "subtotal": {
            "type": "number",
            "description": "energyCost + timeCost + sessionFee, before tax.",
            "format": "double",
            "example": 4.6
          },
          "tax": {
            "type": "number",
            "description": "Tax applied to this CDR (0 when none).",
            "format": "double",
            "example": 0
          },
          "taxRate": {
            "type": [
              "null",
              "number"
            ],
            "description": "Tax rate (percent) applied, or null when no tax rate is set.",
            "format": "double",
            "example": 11.5
          },
          "total": {
            "type": "number",
            "description": "Total amount charged to the driver (matches the CDR amount).",
            "format": "double",
            "example": 9.82
          },
          "totalCosts": {
            "type": "number",
            "description": "Sum of all operator costs for this CDR.",
            "format": "double",
            "example": 5.01
          }
        }
      },
      "CpmsBillingErrorResponse": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "description": "Stable machine-readable error code (duplicated as `code`).",
            "example": "not_found"
          },
          "code": {
            "type": "string",
            "description": "Stable machine-readable error code.",
            "example": "not_found"
          },
          "message": {
            "type": "string",
            "description": "Human-readable explanation of the error.",
            "example": "Transaction '7c1a2b30-4d5e-6a7b-8c9d-0e1f2a3b4c5d' not found"
          }
        }
      },
      "CpmsBillingForceStopResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsBillingForceStopResult"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-20T18:42:09Z"
          }
        }
      },
      "CpmsBillingForceStopResult": {
        "type": "object",
        "properties": {
          "sessionId": {
            "type": "string",
            "description": "UUID of the session that was force-stopped.",
            "format": "uuid",
            "example": "3f5d6e70-8a9b-4c1d-2e3f-4a5b6c7d8e9f"
          },
          "stopped": {
            "type": "boolean",
            "description": "Always true once the session has been finalized to COMPLETED.",
            "example": true
          }
        }
      },
      "CpmsBillingPagination": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "description": "1-based page index of this result set.",
            "format": "int32",
            "example": 1
          },
          "pageSize": {
            "type": "integer",
            "description": "Items requested per page (1–100; defaults to 50).",
            "format": "int32",
            "example": 50
          },
          "total": {
            "type": "integer",
            "description": "Total number of items across all pages.",
            "format": "int32",
            "example": 412
          },
          "totalPages": {
            "type": "integer",
            "description": "Total number of pages at the current pageSize.",
            "format": "int32",
            "example": 9
          }
        }
      },
      "CpmsBillingPayoutRef": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Payout UUID.",
            "format": "uuid",
            "example": "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
          },
          "number": {
            "type": [
              "null",
              "string"
            ],
            "description": "Human-readable payout number.",
            "example": "PO-2026-0042"
          }
        }
      },
      "CpmsBillingProfitSummary": {
        "type": "object",
        "properties": {
          "grossProfit": {
            "type": "number",
            "description": "Gross profit (amount minus direct costs).",
            "format": "double",
            "example": 5.31
          },
          "netProfit": {
            "type": "number",
            "description": "Net profit after fees.",
            "format": "double",
            "example": 4.81
          },
          "profitMarginPercent": {
            "type": "number",
            "description": "Net profit as a percentage of the amount charged.",
            "format": "double",
            "example": 48.9
          }
        }
      },
      "CpmsBillingRefundResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsBillingRefundResult"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-20T18:42:09Z"
          }
        }
      },
      "CpmsBillingRefundResult": {
        "type": "object",
        "properties": {
          "sessionId": {
            "type": "string",
            "description": "UUID supplied to identify the session that was refunded.",
            "format": "uuid",
            "example": "3f5d6e70-8a9b-4c1d-2e3f-4a5b6c7d8e9f"
          },
          "refundId": {
            "type": [
              "null",
              "string"
            ],
            "description": "Payment-processor refund id (e.g. a Stripe refund id).",
            "example": "re_3PXyZ2EXAMPLE0001"
          },
          "refundedAmount": {
            "type": "number",
            "description": "Amount that was refunded (in the session currency).",
            "format": "double",
            "example": 9.82
          },
          "currency": {
            "type": [
              "null",
              "string"
            ],
            "description": "ISO-4217 currency of the refunded amount.",
            "example": "USD"
          },
          "paymentIntent": {
            "type": [
              "null",
              "string"
            ],
            "description": "The Stripe PaymentIntent id (pi_...) that was reversed.",
            "example": "pi_3PXyZ2EXAMPLE0001"
          },
          "refunded": {
            "type": "boolean",
            "description": "Always true on a successful refund.",
            "example": true
          }
        }
      },
      "CpmsBillingRequest": {
        "type": "object",
        "properties": {
          "vatRate": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "billingAddress": {
            "type": [
              "null",
              "string"
            ]
          },
          "invoicePrefix": {
            "type": [
              "null",
              "string"
            ]
          },
          "paymentTermsDays": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          }
        }
      },
      "CpmsBillingTransactionDetail": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Stable CDR UUID.",
            "format": "uuid",
            "example": "7c1a2b30-4d5e-6a7b-8c9d-0e1f2a3b4c5d"
          },
          "ocpiId": {
            "type": [
              "null",
              "string"
            ],
            "description": "OCPI CDR id, or null.",
            "example": "CDR-2026-000123"
          },
          "sessionId": {
            "type": [
              "null",
              "string"
            ],
            "description": "UUID of the linked charging session, or null.",
            "format": "uuid",
            "example": "3f5d6e70-8a9b-4c1d-2e3f-4a5b6c7d8e9f"
          },
          "startTime": {
            "description": "UTC timestamp the session started.",
            "format": "date-time",
            "example": "2026-06-19T14:02:11Z"
          },
          "endTime": {
            "description": "UTC timestamp the session ended.",
            "format": "date-time",
            "example": "2026-06-19T14:48:53Z"
          },
          "energyKwh": {
            "type": "number",
            "description": "Total energy delivered, in kWh.",
            "format": "double",
            "example": 23.4
          },
          "totalTimeMinutes": {
            "type": "number",
            "description": "Total occupancy time of the session, in minutes (CDR time is stored in hours).",
            "format": "double",
            "example": 46.7
          },
          "currency": {
            "type": [
              "null",
              "string"
            ],
            "description": "ISO-4217 currency of the amounts.",
            "example": "USD"
          },
          "amount": {
            "type": "number",
            "description": "Total amount charged to the driver.",
            "format": "double",
            "example": 9.82
          },
          "paymentStatus": {
            "type": [
              "null",
              "string"
            ],
            "description": "Payment status of the CDR.",
            "example": "succeeded"
          },
          "paymentMethod": {
            "type": [
              "null",
              "string"
            ],
            "description": "Payment method used.",
            "example": "card"
          },
          "paymentReference": {
            "type": [
              "null",
              "string"
            ],
            "description": "Payment-processor reference for the charge.",
            "example": "pi_3PXyZ2EXAMPLE0001"
          },
          "authMethod": {
            "type": [
              "null",
              "string"
            ],
            "description": "How the session was authorized (e.g. RFID, AppUser, AuthRequest).",
            "example": "AppUser"
          },
          "authorizationReference": {
            "type": [
              "null",
              "string"
            ],
            "description": "Authorization reference for the session (e.g. the Stripe PaymentIntent id).",
            "example": "pi_3PXyZ2EXAMPLE0001"
          },
          "isFree": {
            "type": "boolean",
            "description": "True when the session was free.",
            "example": false
          },
          "locationName": {
            "type": [
              "null",
              "string"
            ],
            "description": "Name of the session's location, or null.",
            "example": "Isla Verde Plaza"
          },
          "locationAddress": {
            "type": [
              "null",
              "string"
            ],
            "description": "Street address of the session's location, or null.",
            "example": "100 Av. Isla Verde, Carolina"
          },
          "chargerUid": {
            "type": [
              "null",
              "string"
            ],
            "description": "OCPP charge-point identity of the station, or null.",
            "example": "CP-IslaVerde-01"
          },
          "connectorNumber": {
            "type": [
              "null",
              "integer"
            ],
            "description": "Connector number used (1-based), or null.",
            "format": "int32",
            "example": 1
          },
          "costBreakdown": {
            "description": "Full operator cost breakdown for this CDR.",
            "$ref": "#/components/schemas/CpmsBillingCostBreakdown"
          },
          "profit": {
            "description": "Profit summary for this CDR.",
            "$ref": "#/components/schemas/CpmsBillingProfitSummary"
          },
          "payout": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "description": "Payout reference for this CDR, or null when not yet settled.",
                "$ref": "#/components/schemas/CpmsBillingPayoutRef"
              }
            ]
          },
          "invoiceNumber": {
            "type": [
              "null",
              "string"
            ],
            "description": "Invoice number, if an invoice was generated.",
            "example": "INV-2026-000123"
          },
          "invoiceDate": {
            "description": "UTC date the invoice was generated, or null.",
            "format": "date-time",
            "example": "2026-06-20T00:00:00Z"
          }
        }
      },
      "CpmsBillingTransactionListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CpmsBillingTransactionSummary"
            },
            "description": "The page of transactions (CDRs)."
          },
          "pagination": {
            "$ref": "#/components/schemas/CpmsBillingPagination"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-20T18:42:09Z"
          }
        }
      },
      "CpmsBillingTransactionResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsBillingTransactionDetail"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-20T18:42:09Z"
          }
        }
      },
      "CpmsBillingTransactionSummary": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Stable CDR UUID. Use it in GET /transactions/{id}.",
            "format": "uuid",
            "example": "7c1a2b30-4d5e-6a7b-8c9d-0e1f2a3b4c5d"
          },
          "ocpiId": {
            "type": [
              "null",
              "string"
            ],
            "description": "OCPI CDR id, when this CDR was produced/exchanged over OCPI; null otherwise.",
            "example": "CDR-2026-000123"
          },
          "sessionId": {
            "type": [
              "null",
              "string"
            ],
            "description": "UUID of the charging session that produced this CDR, or null if not linked.",
            "format": "uuid",
            "example": "3f5d6e70-8a9b-4c1d-2e3f-4a5b6c7d8e9f"
          },
          "chargerUid": {
            "type": [
              "null",
              "string"
            ],
            "description": "OCPP charge-point identity of the station that served the session, or null.",
            "example": "CP-IslaVerde-01"
          },
          "locationName": {
            "type": [
              "null",
              "string"
            ],
            "description": "Name of the site/location the session occurred at, or null.",
            "example": "Isla Verde Plaza"
          },
          "startTime": {
            "description": "UTC timestamp the session started.",
            "format": "date-time",
            "example": "2026-06-19T14:02:11Z"
          },
          "endTime": {
            "description": "UTC timestamp the session ended.",
            "format": "date-time",
            "example": "2026-06-19T14:48:53Z"
          },
          "energyKwh": {
            "type": "number",
            "description": "Total energy delivered for this CDR, in kWh.",
            "format": "double",
            "example": 23.4
          },
          "amount": {
            "type": "number",
            "description": "Total amount charged to the driver for this CDR (in the CDR currency).",
            "format": "double",
            "example": 9.82
          },
          "currency": {
            "type": [
              "null",
              "string"
            ],
            "description": "ISO-4217 currency of the amount (e.g. USD).",
            "example": "USD"
          },
          "paymentStatus": {
            "type": [
              "null",
              "string"
            ],
            "description": "Payment status of the CDR (e.g. succeeded, failed, refunded, waived).",
            "example": "succeeded"
          },
          "paymentMethod": {
            "type": [
              "null",
              "string"
            ],
            "description": "Payment method used (e.g. card, wallet, managed).",
            "example": "card"
          },
          "paymentReference": {
            "type": [
              "null",
              "string"
            ],
            "description": "Payment-processor reference for the charge (e.g. a Stripe PaymentIntent id).",
            "example": "pi_3PXyZ2EXAMPLE0001"
          },
          "energyCost": {
            "type": "number",
            "description": "Operator cost attributable to delivered energy (operator-only field).",
            "format": "double",
            "example": 4.1
          },
          "timeCost": {
            "type": "number",
            "description": "Operator cost attributable to occupancy time (operator-only field).",
            "format": "double",
            "example": 0
          },
          "sessionFee": {
            "type": "number",
            "description": "Fixed per-session cost component (operator-only field).",
            "format": "double",
            "example": 0.5
          },
          "processingFees": {
            "type": "number",
            "description": "Payment-processing fees borne for this CDR (operator-only field).",
            "format": "double",
            "example": 0.41
          },
          "totalCosts": {
            "type": "number",
            "description": "Sum of all operator costs for this CDR (operator-only field).",
            "format": "double",
            "example": 5.01
          },
          "grossProfit": {
            "type": "number",
            "description": "Gross profit (amount minus direct costs) for this CDR (operator-only field).",
            "format": "double",
            "example": 5.31
          },
          "netProfit": {
            "type": "number",
            "description": "Net profit after fees for this CDR (operator-only field).",
            "format": "double",
            "example": 4.81
          },
          "profitMarginPercent": {
            "type": "number",
            "description": "Net profit as a percentage of the amount charged (operator-only field).",
            "format": "double",
            "example": 48.9
          },
          "taxAmount": {
            "type": [
              "null",
              "number"
            ],
            "description": "Tax charged on this CDR, or null when no tax applied.",
            "format": "double",
            "example": 0
          },
          "payoutId": {
            "type": [
              "null",
              "string"
            ],
            "description": "UUID of the payout this CDR was settled in, or null if not yet paid out.",
            "format": "uuid",
            "example": "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
          },
          "isFree": {
            "type": "boolean",
            "description": "True when the session was free (no charge).",
            "example": false
          }
        }
      },
      "CpmsBillingWaiveResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsBillingWaiveResult"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-20T18:42:09Z"
          }
        }
      },
      "CpmsBillingWaiveResult": {
        "type": "object",
        "properties": {
          "sessionId": {
            "type": "string",
            "description": "UUID of the session whose idle fee was waived.",
            "format": "uuid",
            "example": "3f5d6e70-8a9b-4c1d-2e3f-4a5b6c7d8e9f"
          },
          "originalIdleFee": {
            "type": "number",
            "description": "The session's idle fee before the waiver (session currency).",
            "format": "double",
            "example": 6
          },
          "waivedAmount": {
            "type": "number",
            "description": "Amount waived (full idle fee unless a partial amount was requested).",
            "format": "double",
            "example": 6
          },
          "remainingIdleFee": {
            "type": "number",
            "description": "Idle fee remaining after the waiver (0 for a full waiver).",
            "format": "double",
            "example": 0
          },
          "currency": {
            "type": [
              "null",
              "string"
            ],
            "description": "ISO-4217 currency of the amounts.",
            "example": "USD"
          },
          "waived": {
            "type": "boolean",
            "description": "Always true on a successful waiver.",
            "example": true
          }
        }
      },
      "CpmsBrandingRequest": {
        "type": "object",
        "properties": {
          "primaryColor": {
            "type": [
              "null",
              "string"
            ]
          },
          "secondaryColor": {
            "type": [
              "null",
              "string"
            ]
          },
          "logoUrl": {
            "type": [
              "null",
              "string"
            ]
          },
          "faviconUrl": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "CpmsCatalogPagination": {
        "required": [
          "page",
          "pageSize",
          "total",
          "totalPages"
        ],
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "total": {
            "type": "integer",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "CpmsCertificateDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Certificate id (stable UUID).",
            "format": "uuid"
          },
          "serialNumber": {
            "type": [
              "null",
              "string"
            ],
            "description": "Hex serial number assigned by the CA."
          },
          "thumbprint": {
            "type": [
              "null",
              "string"
            ],
            "description": "SHA-256 thumbprint (hex)."
          },
          "subjectCN": {
            "type": [
              "null",
              "string"
            ],
            "description": "Subject common name (typically the charger's identity)."
          },
          "issuerCN": {
            "type": [
              "null",
              "string"
            ],
            "description": "Issuing CA common name."
          },
          "notBefore": {
            "description": "Valid-from (UTC).",
            "format": "date-time"
          },
          "notAfter": {
            "description": "Valid-to / expiry (UTC).",
            "format": "date-time"
          },
          "status": {
            "type": [
              "null",
              "string"
            ],
            "description": "Lifecycle status: Active, Revoked, Expired, or Superseded."
          },
          "revokedAt": {
            "description": "When revoked (UTC), if applicable.",
            "format": "date-time"
          },
          "revocationReason": {
            "type": [
              "null",
              "string"
            ],
            "description": "Revocation reason, if revoked."
          },
          "issuedAt": {
            "description": "When issued (UTC).",
            "format": "date-time"
          },
          "source": {
            "type": [
              "null",
              "string"
            ],
            "description": "Issuance source, e.g. \"Internal-AKV\"."
          }
        }
      },
      "CpmsCertificateListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CpmsCertificateDto"
            }
          },
          "chargerId": {
            "type": "string",
            "description": "The charger these certificates were issued to.",
            "format": "uuid"
          },
          "count": {
            "type": "integer",
            "description": "Number of certificates returned.",
            "format": "int32"
          },
          "success": {
            "type": "boolean"
          },
          "timestamp": {
            "format": "date-time"
          }
        }
      },
      "CpmsChangeAvailabilityRequest": {
        "type": "object",
        "properties": {
          "connectorNumber": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "type": {
            "type": "string"
          }
        }
      },
      "CpmsChargerCommandDto": {
        "type": "object",
        "properties": {
          "action": {
            "type": [
              "null",
              "string"
            ],
            "description": "OCPP action sent to the charger, e.g. \"Reset\", \"RemoteStartTransaction\"."
          },
          "status": {
            "type": [
              "null",
              "string"
            ],
            "description": "Result status of the command (e.g. \"Accepted\", \"Rejected\", \"Timeout\")."
          },
          "responseTimeMs": {
            "type": [
              "null",
              "integer"
            ],
            "description": "Round-trip time to the charger's response, in milliseconds (null if no response).",
            "format": "int32"
          },
          "timestamp": {
            "description": "When the command was sent (UTC).",
            "format": "date-time"
          },
          "sentBy": {
            "type": [
              "null",
              "string"
            ],
            "description": "Who triggered the command — the operator user id, or the calling service for automated flows."
          },
          "correlationId": {
            "type": [
              "null",
              "string"
            ],
            "description": "Correlation id linking the command to its OCPP response."
          }
        }
      },
      "CpmsChargerCommandListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CpmsChargerCommandDto"
            }
          },
          "chargerId": {
            "type": "string",
            "description": "The charger these commands were sent to.",
            "format": "uuid"
          },
          "success": {
            "type": "boolean"
          },
          "timestamp": {
            "format": "date-time"
          }
        }
      },
      "CpmsChargerDetail": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Stable charger UUID.",
            "format": "uuid",
            "example": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b"
          },
          "uid": {
            "type": "string",
            "description": "OCPP charge-point identity (chargePointId).",
            "example": "CP-IslaVerde-01"
          },
          "status": {
            "type": "string",
            "description": "Last OCPP status reported by the station. Cross-check isOnline for liveness.",
            "example": "Available"
          },
          "networkId": {
            "type": "integer",
            "description": "Internal numeric id of the owning network.",
            "format": "int32",
            "example": 3
          },
          "locationId": {
            "type": [
              "null",
              "integer"
            ],
            "description": "Internal numeric id of the assigned location/site, or null.",
            "format": "int32",
            "example": 12
          },
          "serialNumber": {
            "type": [
              "null",
              "string"
            ],
            "description": "Manufacturer hardware serial number, if reported.",
            "example": "SN-A1B2C3D4"
          },
          "firmwareVersion": {
            "type": [
              "null",
              "string"
            ],
            "description": "Firmware version last reported via BootNotification.",
            "example": "1.5.32"
          },
          "ocppVersion": {
            "type": [
              "null",
              "string"
            ],
            "description": "OCPP protocol the station negotiated.",
            "example": "1.6"
          },
          "maxPowerKw": {
            "type": [
              "null",
              "number"
            ],
            "description": "Rated maximum power of the charger, in kW.",
            "format": "double",
            "example": 150
          },
          "securityProfile": {
            "type": "integer",
            "description": "OCPP security profile in force: 1 = ws:// + Basic auth, 2 = wss:// + Basic auth, 3 = wss:// + mutual TLS.",
            "format": "int32",
            "example": 2
          },
          "lastHeartbeat": {
            "description": "UTC timestamp of the last OCPP heartbeat / StatusNotification from the station.",
            "format": "date-time",
            "example": "2026-06-19T18:42:07Z"
          },
          "isOnline": {
            "type": "boolean",
            "description": "True only if a heartbeat arrived within the last 5 minutes. Treat !isOnline as unavailable regardless of the status field.",
            "example": true
          },
          "modelUuid": {
            "type": [
              "null",
              "string"
            ],
            "description": "UUID of the charger's hardware model, or null. Resolve names/specs via GET /charger-models/{id}.",
            "format": "uuid",
            "example": "a1b2c3d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d"
          },
          "manufacturerUuid": {
            "type": [
              "null",
              "string"
            ],
            "description": "UUID of the charger's manufacturer, or null. Resolve the name/logo via GET /manufacturers/{id}.",
            "format": "uuid",
            "example": "b2c3d4e5-6f7a-8b9c-0d1e-2f3a4b5c6d7e"
          },
          "locationName": {
            "type": [
              "null",
              "string"
            ],
            "description": "Name of the assigned site/location, or null if unassigned.",
            "example": "Isla Verde Plaza"
          },
          "locationUuid": {
            "type": [
              "null",
              "string"
            ],
            "description": "UUID of the assigned location/site, or null if unassigned.",
            "format": "uuid",
            "example": "c3d4e5f6-7a8b-9c0d-1e2f-3a4b5c6d7e8f"
          },
          "connectors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CpmsConnectorSummary"
            },
            "description": "The charger's connectors, ordered by connector number."
          }
        }
      },
      "CpmsChargerListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CpmsChargerSummary"
            },
            "description": "The page of chargers."
          },
          "pagination": {
            "$ref": "#/components/schemas/CpmsPagination"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "CpmsChargerModelDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Charger model id (stable UUID).",
            "format": "uuid"
          },
          "modelName": {
            "type": "string",
            "description": "Model name, e.g. \"Terra AC W22\"."
          },
          "description": {
            "type": [
              "null",
              "string"
            ],
            "description": "Free-text description of the model."
          },
          "maxPower": {
            "type": "number",
            "description": "Maximum power output in kW.",
            "format": "double"
          },
          "numberOfConnectors": {
            "type": "integer",
            "description": "Number of connectors on the model.",
            "format": "int32"
          },
          "supportedConnectorTypes": {
            "type": [
              "null",
              "string"
            ],
            "description": "Supported connector types (catalog-defined string)."
          },
          "ocppVersion": {
            "type": [
              "null",
              "string"
            ],
            "description": "OCPP version the model speaks, e.g. \"1.6\" or \"2.0.1\"."
          },
          "supportedFeatures": {
            "type": [
              "null",
              "string"
            ],
            "description": "Supported OCPP features (catalog-defined string)."
          },
          "imageUrl": {
            "type": [
              "null",
              "string"
            ],
            "description": "URL of the model image, if set."
          },
          "datasheetUrl": {
            "type": [
              "null",
              "string"
            ],
            "description": "URL of the model datasheet, if set."
          },
          "manufacturer": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "description": "The model's manufacturer (id, name, logo).",
                "$ref": "#/components/schemas/CpmsManufacturerDto"
              }
            ]
          },
          "createdAt": {
            "format": "date-time"
          },
          "updatedAt": {
            "format": "date-time"
          }
        }
      },
      "CpmsChargerModelListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CpmsChargerModelDto"
            }
          },
          "pagination": {
            "$ref": "#/components/schemas/CpmsCatalogPagination"
          },
          "success": {
            "type": "boolean"
          },
          "timestamp": {
            "format": "date-time"
          }
        }
      },
      "CpmsChargerModelResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsChargerModelDto"
          },
          "success": {
            "type": "boolean"
          },
          "timestamp": {
            "format": "date-time"
          }
        }
      },
      "CpmsChargerResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsChargerDetail"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "CpmsChargerSummary": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Stable charger UUID. Use it in GET /chargers/{uuid} and wherever a chargerId is required.",
            "format": "uuid",
            "example": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b"
          },
          "uid": {
            "type": "string",
            "description": "OCPP charge-point identity — the chargePointId the physical station connects to the CSMS with.",
            "example": "CP-IslaVerde-01"
          },
          "status": {
            "type": "string",
            "description": "Last OCPP status reported by the station (Available, Charging, Faulted, Unavailable, …). Can read stale after a station drops offline — cross-check isOnline on the detail view for liveness.",
            "example": "Available"
          },
          "networkId": {
            "type": "integer",
            "description": "Internal numeric id of the owning network. The public network handle is the UUID returned by GET /networks.",
            "format": "int32",
            "example": 3
          },
          "locationId": {
            "type": [
              "null",
              "integer"
            ],
            "description": "Internal numeric id of the location/site this charger is assigned to, or null if unassigned.",
            "format": "int32",
            "example": 12
          },
          "serialNumber": {
            "type": [
              "null",
              "string"
            ],
            "description": "Manufacturer hardware serial number, if the station reported one.",
            "example": "SN-A1B2C3D4"
          },
          "firmwareVersion": {
            "type": [
              "null",
              "string"
            ],
            "description": "Firmware version last reported by the station via OCPP BootNotification.",
            "example": "1.5.32"
          },
          "ocppVersion": {
            "type": [
              "null",
              "string"
            ],
            "description": "OCPP protocol the station negotiated (e.g. 1.6 or 2.0.1).",
            "example": "1.6"
          },
          "modelUuid": {
            "type": [
              "null",
              "string"
            ],
            "description": "UUID of the charger's hardware model, or null if unspecified. Resolve names/specs via GET /charger-models/{id}.",
            "format": "uuid",
            "example": "a1b2c3d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d"
          },
          "manufacturerUuid": {
            "type": [
              "null",
              "string"
            ],
            "description": "UUID of the charger's manufacturer, or null. Resolve the name/logo via GET /manufacturers/{id}.",
            "format": "uuid",
            "example": "b2c3d4e5-6f7a-8b9c-0d1e-2f3a4b5c6d7e"
          },
          "locationName": {
            "type": [
              "null",
              "string"
            ],
            "description": "Name of the site/location the charger is assigned to, or null if unassigned.",
            "example": "Isla Verde Plaza"
          },
          "locationUuid": {
            "type": [
              "null",
              "string"
            ],
            "description": "UUID of the assigned location/site (the public handle for locationId), or null if unassigned.",
            "format": "uuid",
            "example": "c3d4e5f6-7a8b-9c0d-1e2f-3a4b5c6d7e8f"
          }
        }
      },
      "CpmsChargingProfileDetailDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ],
            "description": "Profile name."
          },
          "profileType": {
            "type": [
              "null",
              "string"
            ],
            "description": "Profile purpose, e.g. \"TxProfile\", \"ChargingStationMaxProfile\"."
          },
          "chargingCurveType": {
            "type": [
              "null",
              "string"
            ],
            "description": "Charging curve kind (absolute/recurring/relative)."
          },
          "recurrenceType": {
            "type": [
              "null",
              "string"
            ],
            "description": "Recurrence, e.g. \"Daily\", \"Weekly\", or none."
          },
          "validFrom": {
            "description": "Profile valid-from (UTC), if bounded.",
            "format": "date-time"
          },
          "validTo": {
            "description": "Profile valid-to (UTC), if bounded.",
            "format": "date-time"
          },
          "priority": {
            "type": "integer",
            "description": "Stacking priority (higher wins).",
            "format": "int32"
          },
          "minPowerKw": {
            "type": [
              "null",
              "number"
            ],
            "description": "Minimum power floor in kW, if set.",
            "format": "double"
          },
          "maxPowerKw": {
            "type": [
              "null",
              "number"
            ],
            "description": "Maximum power limit in kW, if set.",
            "format": "double"
          },
          "profileData": {
            "type": [
              "null",
              "string"
            ],
            "description": "Raw OCPP charging-schedule payload (JSON)."
          }
        }
      },
      "CpmsChargingProfileDto": {
        "type": "object",
        "properties": {
          "assignmentId": {
            "type": "integer",
            "description": "Assignment id (charger↔profile link).",
            "format": "int32"
          },
          "profileId": {
            "type": "integer",
            "description": "The charging profile's id.",
            "format": "int32"
          },
          "isActive": {
            "type": "boolean",
            "description": "Whether the assignment is currently active on the charger."
          },
          "startDate": {
            "description": "When the assignment takes effect (UTC), if scheduled.",
            "format": "date-time"
          },
          "endDate": {
            "description": "When the assignment ends (UTC), if scheduled.",
            "format": "date-time"
          },
          "profile": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "description": "The assigned profile's definition.",
                "$ref": "#/components/schemas/CpmsChargingProfileDetailDto"
              }
            ]
          }
        }
      },
      "CpmsChargingProfileListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CpmsChargingProfileDto"
            }
          },
          "chargerId": {
            "type": "string",
            "description": "The charger these profiles are assigned to.",
            "format": "uuid"
          },
          "count": {
            "type": "integer",
            "description": "Number of profile assignments returned.",
            "format": "int32"
          },
          "success": {
            "type": "boolean"
          },
          "timestamp": {
            "format": "date-time"
          }
        }
      },
      "CpmsChargingProfileQueryRequest": {
        "type": "object",
        "properties": {
          "evseId": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "chargingProfilePurpose": {
            "type": [
              "null",
              "string"
            ]
          },
          "stackLevel": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          }
        }
      },
      "CpmsConnectorStatus": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Stable connector UUID.",
            "format": "uuid",
            "example": "9f1c2b30-4d5e-6a7b-8c9d-0e1f2a3b4c5d"
          },
          "number": {
            "type": "integer",
            "description": "Connector number on the charger (1-based).",
            "format": "int32",
            "example": 1
          },
          "chargerId": {
            "type": "string",
            "description": "Stable UUID of the charger this connector belongs to.",
            "format": "uuid",
            "example": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b"
          },
          "status": {
            "type": "string",
            "description": "Live connector status (Available, Charging, Faulted, …) or UNKNOWN if never reported.",
            "example": "Charging"
          },
          "standard": {
            "type": "string",
            "description": "Plug standard (e.g. IEC_62196_T2, CHADEMO, IEC_62196_T1_COMBO).",
            "example": "IEC_62196_T2"
          },
          "powerType": {
            "type": "string",
            "description": "Power delivery type (AC_1_PHASE, AC_3_PHASE, DC).",
            "example": "AC_3_PHASE"
          },
          "maxPowerKw": {
            "type": [
              "null",
              "number"
            ],
            "description": "Maximum power this connector can deliver, in kW.",
            "format": "double",
            "example": 22
          },
          "chargerOnline": {
            "type": "boolean",
            "description": "True only if the parent charger sent a heartbeat within the last 5 minutes.",
            "example": true
          }
        }
      },
      "CpmsConnectorStatusResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsConnectorStatus"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "CpmsConnectorSummary": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Stable connector UUID. Use it in GET /connectors/{uuid}/status.",
            "format": "uuid",
            "example": "9f1c2b30-4d5e-6a7b-8c9d-0e1f2a3b4c5d"
          },
          "number": {
            "type": "integer",
            "description": "Connector number on the charger (1-based).",
            "format": "int32",
            "example": 1
          },
          "standard": {
            "type": "string",
            "description": "Plug standard (e.g. IEC_62196_T2, CHADEMO, IEC_62196_T1_COMBO).",
            "example": "IEC_62196_T2"
          },
          "format": {
            "type": "string",
            "description": "Connector format: CABLE (tethered) or SOCKET (untethered).",
            "example": "SOCKET"
          },
          "powerType": {
            "type": "string",
            "description": "Power delivery type (AC_1_PHASE, AC_3_PHASE, DC).",
            "example": "AC_3_PHASE"
          },
          "maxPowerKw": {
            "type": [
              "null",
              "number"
            ],
            "description": "Maximum power this connector can deliver, in kW.",
            "format": "double",
            "example": 22
          },
          "status": {
            "type": "string",
            "description": "Live connector status (Available, Charging, Faulted, …) or UNKNOWN if never reported.",
            "example": "Available"
          }
        }
      },
      "CpmsConnectorWriteData": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Stable connector UUID.",
            "format": "uuid",
            "example": "9f1c2b30-4d5e-6a7b-8c9d-0e1f2a3b4c5d"
          },
          "chargerId": {
            "type": "string",
            "description": "Stable UUID of the charger this connector belongs to.",
            "format": "uuid",
            "example": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b"
          },
          "connectorNumber": {
            "type": "integer",
            "description": "Connector number on the charger (1-based).",
            "format": "int32",
            "example": 1
          },
          "connectorIdentifier": {
            "type": "string",
            "description": "Provisioning identifier of the connector within its charger.",
            "example": "CP-IslaVerde-01-1"
          },
          "standard": {
            "type": "string",
            "description": "Plug standard (e.g. IEC_62196_T2, CHADEMO, IEC_62196_T1_COMBO).",
            "example": "IEC_62196_T2"
          },
          "format": {
            "type": "string",
            "description": "Connector format: CABLE (tethered) or SOCKET (untethered).",
            "example": "SOCKET"
          },
          "powerType": {
            "type": "string",
            "description": "Power delivery type (AC_1_PHASE, AC_3_PHASE, DC).",
            "example": "AC_3_PHASE"
          },
          "maxVoltage": {
            "type": "integer",
            "description": "Maximum voltage of the connector, in volts.",
            "format": "int32",
            "example": 400
          },
          "maxAmperage": {
            "type": "integer",
            "description": "Maximum amperage of the connector, in amperes.",
            "format": "int32",
            "example": 32
          },
          "maxPower": {
            "type": "number",
            "description": "Maximum power this connector can deliver, in kW (stored internally as watts).",
            "format": "double",
            "example": 22
          },
          "status": {
            "type": [
              "null",
              "string"
            ],
            "description": "Internal connector status (AVAILABLE, PREPARING, CHARGING, OUTOFORDER, BLOCKED, INOPERATIVE, …) or null if never set.",
            "example": "AVAILABLE"
          },
          "networkId": {
            "type": "integer",
            "description": "Internal numeric id of the owning network (inherited from the connector's charger).",
            "format": "int32",
            "example": 3
          },
          "lastUpdated": {
            "description": "UTC timestamp this connector record was last updated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:07Z"
          }
        }
      },
      "CpmsConnectorWriteResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsConnectorWriteData"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "CpmsContext": {
        "type": "object",
        "properties": {
          "accessibleNetworkCount": {
            "type": "integer",
            "description": "Number of networks this key is authorized to operate.",
            "format": "int32",
            "example": 2
          },
          "scopes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "OAuth scopes granted to this key (the cpms:* vocabulary). See GET /.well-known/scopes."
          },
          "keyType": {
            "type": [
              "null",
              "string"
            ],
            "description": "Visibility class of the API key (e.g. Private, Publishable), or null if unset.",
            "example": "Private"
          },
          "unrestricted": {
            "type": "boolean",
            "description": "True for first-party AllNetworks keys that are not pinned to a fixed network set.",
            "example": false
          }
        }
      },
      "CpmsContextResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsContext"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "CpmsControlChangeAvailabilityData": {
        "type": "object",
        "properties": {
          "chargerId": {
            "type": "string",
            "description": "Stable charger UUID the command was sent to.",
            "format": "uuid",
            "example": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b"
          },
          "connectorNumber": {
            "type": "integer",
            "description": "Targeted connector number; 0 means the whole charger (OCPP connectorId 0).",
            "format": "int32",
            "example": 0
          },
          "type": {
            "type": "string",
            "description": "Availability requested on the device: 'Operative' or 'Inoperative'.",
            "example": "Inoperative"
          },
          "accepted": {
            "type": "boolean",
            "description": "True when the station accepted the change-availability command.",
            "example": true
          },
          "message": {
            "type": "string",
            "description": "Human-readable confirmation of the dispatched command.",
            "example": "ChangeAvailability (Inoperative) command sent successfully"
          }
        }
      },
      "CpmsControlChangeAvailabilityResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsControlChangeAvailabilityData"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "CpmsControlChangeConfigurationData": {
        "type": "object",
        "properties": {
          "chargerId": {
            "type": "string",
            "description": "Stable charger UUID the configuration change targeted.",
            "format": "uuid",
            "example": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b"
          },
          "chargePointId": {
            "type": "string",
            "description": "OCPP charge-point identity (chargePointId) the station connects with.",
            "example": "CP-IslaVerde-01"
          },
          "ocppVersion": {
            "type": [
              "null",
              "string"
            ],
            "description": "OCPP protocol the station negotiated — determines whether ChangeConfiguration (1.6) or SetVariables (2.0.1) was used.",
            "example": "1.6"
          },
          "key": {
            "type": "string",
            "description": "Configuration key that was changed. For 2.0.1 this is the 'Component.Variable' form (default component 'Charger').",
            "example": "HeartbeatInterval"
          },
          "accepted": {
            "type": "boolean",
            "description": "True when the station accepted the configuration change.",
            "example": true
          },
          "result": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "description": "Raw OCPP command result returned by the station (acceptance status / reboot-required hint in PayloadJson).",
                "$ref": "#/components/schemas/OcppCommandResponse"
              }
            ]
          }
        }
      },
      "CpmsControlChangeConfigurationResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsControlChangeConfigurationData"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "CpmsControlConfigurationData": {
        "type": "object",
        "properties": {
          "chargerId": {
            "type": "string",
            "description": "Stable charger UUID the configuration read targeted.",
            "format": "uuid",
            "example": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b"
          },
          "chargePointId": {
            "type": "string",
            "description": "OCPP charge-point identity (chargePointId) the station connects with.",
            "example": "CP-IslaVerde-01"
          },
          "ocppVersion": {
            "type": [
              "null",
              "string"
            ],
            "description": "OCPP protocol the station negotiated — determines whether GetConfiguration (1.6) or GetVariables (2.0.1) was used.",
            "example": "1.6"
          },
          "result": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "description": "Raw OCPP command result returned by the station (key/value configuration or device-model variable payload in PayloadJson).",
                "$ref": "#/components/schemas/OcppCommandResponse"
              }
            ]
          }
        }
      },
      "CpmsControlConfigurationResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsControlConfigurationData"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "CpmsControlSetVariablesData": {
        "type": "object",
        "properties": {
          "chargerId": {
            "type": "string",
            "description": "Stable charger UUID the SetVariables call targeted.",
            "format": "uuid",
            "example": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b"
          },
          "chargePointId": {
            "type": "string",
            "description": "OCPP charge-point identity (chargePointId) the station connects with.",
            "example": "CP-IslaVerde-01"
          },
          "ocppVersion": {
            "type": [
              "null",
              "string"
            ],
            "description": "OCPP protocol the station negotiated (always a 2.0.1 charger for SetVariables).",
            "example": "2.0.1"
          },
          "accepted": {
            "type": "boolean",
            "description": "True when the station accepted the SetVariables request.",
            "example": true
          },
          "result": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "description": "Raw OCPP SetVariables result returned by the station (per-variable accept/reject in PayloadJson).",
                "$ref": "#/components/schemas/OcppCommandResponse"
              }
            ]
          }
        }
      },
      "CpmsControlSetVariablesResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsControlSetVariablesData"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "CpmsControlTriggerMessageData": {
        "type": "object",
        "properties": {
          "chargerId": {
            "type": "string",
            "description": "Stable charger UUID the command was sent to.",
            "format": "uuid",
            "example": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b"
          },
          "requestedMessage": {
            "type": "string",
            "description": "OCPP message the station was asked to emit (e.g. BootNotification, Heartbeat, MeterValues, StatusNotification).",
            "example": "StatusNotification"
          },
          "connectorNumber": {
            "type": [
              "null",
              "integer"
            ],
            "description": "Optional connector scope for the triggered message, or null for the whole charger.",
            "format": "int32",
            "example": 1
          },
          "accepted": {
            "type": "boolean",
            "description": "True when the station accepted the trigger-message command.",
            "example": true
          },
          "message": {
            "type": "string",
            "description": "Human-readable confirmation of the dispatched command.",
            "example": "TriggerMessage (StatusNotification) command sent successfully"
          }
        }
      },
      "CpmsControlTriggerMessageResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsControlTriggerMessageData"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "CpmsControlUnlockData": {
        "type": "object",
        "properties": {
          "chargerId": {
            "type": "string",
            "description": "Stable charger UUID the command was sent to.",
            "format": "uuid",
            "example": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b"
          },
          "connectorNumber": {
            "type": "integer",
            "description": "Connector number (1-based) that was unlocked.",
            "format": "int32",
            "example": 1
          },
          "accepted": {
            "type": "boolean",
            "description": "True when the station accepted the unlock command.",
            "example": true
          },
          "message": {
            "type": "string",
            "description": "Human-readable confirmation of the dispatched command.",
            "example": "Unlock command sent successfully"
          }
        }
      },
      "CpmsControlUnlockResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsControlUnlockData"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "CpmsCreateApiKeyRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "scopes": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            }
          },
          "expiresAt": {
            "format": "date-time"
          },
          "rateLimitPerHour": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "allowedIPs": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            }
          }
        }
      },
      "CpmsCreateLocationRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "networkUuid": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "address": {
            "type": [
              "null",
              "string"
            ]
          },
          "city": {
            "type": [
              "null",
              "string"
            ]
          },
          "state": {
            "type": [
              "null",
              "string"
            ]
          },
          "country": {
            "type": [
              "null",
              "string"
            ]
          },
          "postalCode": {
            "type": [
              "null",
              "string"
            ]
          },
          "contactPhone": {
            "type": [
              "null",
              "string"
            ]
          },
          "timezone": {
            "type": [
              "null",
              "string"
            ]
          },
          "latitude": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "format": "double"
          },
          "longitude": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "format": "double"
          }
        }
      },
      "CpmsCreateTariffRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "networkUuid": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "currency": {
            "type": [
              "null",
              "string"
            ]
          },
          "energyRate": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "timeRate": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "sessionFee": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "idleRate": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "idleGracePeriodMinutes": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "peakHoursStart": {
            "type": [
              "null",
              "string"
            ]
          },
          "peakHoursEnd": {
            "type": [
              "null",
              "string"
            ]
          },
          "peakMultiplier": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "weekendMultiplier": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "taxRate": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "isFree": {
            "type": [
              "null",
              "boolean"
            ]
          }
        }
      },
      "CpmsCreateWebhookRequest": {
        "required": [
          "url",
          "events",
          "description"
        ],
        "type": "object",
        "properties": {
          "url": {
            "type": "string"
          },
          "events": {
            "type": "string"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "CpmsDeviceModelResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CpmsDeviceModelVariableDto"
            }
          },
          "chargerId": {
            "type": "string",
            "description": "The charger this device model belongs to.",
            "format": "uuid"
          },
          "count": {
            "type": "integer",
            "description": "Number of variables returned.",
            "format": "int32"
          },
          "success": {
            "type": "boolean"
          },
          "timestamp": {
            "format": "date-time"
          }
        }
      },
      "CpmsDeviceModelVariableDto": {
        "type": "object",
        "properties": {
          "componentName": {
            "type": [
              "null",
              "string"
            ],
            "description": "OCPP component name, e.g. \"EVSE\", \"Connector\", \"SmartChargingCtrlr\"."
          },
          "componentInstance": {
            "type": [
              "null",
              "string"
            ],
            "description": "Component instance qualifier, if any."
          },
          "evseId": {
            "type": [
              "null",
              "integer"
            ],
            "description": "EVSE id the component belongs to (null = charger-level).",
            "format": "int32"
          },
          "connectorId": {
            "type": [
              "null",
              "integer"
            ],
            "description": "Connector id the component belongs to, if any.",
            "format": "int32"
          },
          "variableName": {
            "type": [
              "null",
              "string"
            ],
            "description": "OCPP variable name, e.g. \"Available\", \"Enabled\"."
          },
          "variableInstance": {
            "type": [
              "null",
              "string"
            ],
            "description": "Variable instance qualifier, if any."
          },
          "attributeType": {
            "type": [
              "null",
              "string"
            ],
            "description": "Attribute type, e.g. \"Actual\", \"Target\", \"MinSet\", \"MaxSet\"."
          },
          "attributeValue": {
            "type": [
              "null",
              "string"
            ],
            "description": "The variable's reported value."
          },
          "mutability": {
            "type": [
              "null",
              "string"
            ],
            "description": "Mutability of the variable, e.g. \"ReadOnly\", \"ReadWrite\", \"WriteOnly\"."
          },
          "dataType": {
            "type": [
              "null",
              "string"
            ],
            "description": "OCPP data type of the value."
          },
          "unit": {
            "type": [
              "null",
              "string"
            ],
            "description": "Unit of the value, if any."
          },
          "supportsMonitoring": {
            "type": "boolean",
            "description": "Whether this variable supports monitoring."
          },
          "lastReportedAt": {
            "description": "When the charger last reported this variable (UTC).",
            "format": "date-time"
          }
        }
      },
      "CpmsDisplayMessageContent": {
        "required": [
          "content"
        ],
        "type": "object",
        "properties": {
          "content": {
            "type": "string",
            "description": "The message text to show on the charger display."
          },
          "format": {
            "type": [
              "null",
              "string"
            ],
            "description": "Content format: UTF8 (default), ASCII, HTML, or URI."
          },
          "language": {
            "type": [
              "null",
              "string"
            ],
            "description": "BCP-47 language tag, e.g. \"en\"."
          }
        }
      },
      "CpmsErrorResponse": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "description": "Stable machine-readable error code (duplicated as `code`).",
            "example": "not_found"
          },
          "code": {
            "type": "string",
            "description": "Stable machine-readable error code.",
            "example": "not_found"
          },
          "message": {
            "type": "string",
            "description": "Human-readable explanation of the error.",
            "example": "Charger '4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b' not found"
          }
        }
      },
      "CpmsFetchDiagnosticsRequest": {
        "type": "object",
        "properties": {
          "startTime": {
            "type": [
              "null",
              "string"
            ]
          },
          "stopTime": {
            "type": [
              "null",
              "string"
            ]
          },
          "retries": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "retryInterval": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          }
        }
      },
      "CpmsFirmwareCatalogItem": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Stable firmware-version UUID. Pass it as firmwareVersionId to the OTA update endpoint.",
            "format": "uuid",
            "example": "a1c2e3f4-5b6a-4c7d-8e9f-0a1b2c3d4e5f"
          },
          "version": {
            "type": "string",
            "description": "Firmware version string.",
            "example": "1.5.32"
          },
          "fileName": {
            "type": "string",
            "description": "Firmware image file name.",
            "example": "evlink-1.5.32.bin"
          },
          "fileUrl": {
            "type": "string",
            "description": "Download URL the charger fetches the image from during the OTA update.",
            "example": "https://firmware.phevnix.com/evlink/evlink-1.5.32.bin"
          },
          "fileSizeBytes": {
            "type": "integer",
            "description": "Firmware image size, in bytes.",
            "format": "int64",
            "example": 8388608
          },
          "releaseNotes": {
            "type": [
              "null",
              "string"
            ],
            "description": "Human-readable release notes for this firmware version, if any.",
            "example": "Fixes intermittent MeterValues drop on AC connectors."
          },
          "ocppVersionSupport": {
            "type": [
              "null",
              "string"
            ],
            "description": "OCPP protocol versions this firmware supports.",
            "example": "1.6,2.0.1"
          },
          "checksum": {
            "type": [
              "null",
              "string"
            ],
            "description": "Image checksum (e.g. SHA-256) for integrity verification.",
            "example": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08"
          },
          "isLatest": {
            "type": "boolean",
            "description": "True when this is the latest published image for its charger model.",
            "example": true
          },
          "releasedAt": {
            "description": "UTC timestamp the firmware version was released.",
            "format": "date-time",
            "example": "2026-05-01T00:00:00Z"
          },
          "createdAt": {
            "description": "UTC timestamp the catalog row was created.",
            "format": "date-time",
            "example": "2026-05-01T00:00:00Z"
          }
        }
      },
      "CpmsFirmwareCatalogListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CpmsFirmwareCatalogItem"
            },
            "description": "The page of firmware images."
          },
          "pagination": {
            "$ref": "#/components/schemas/CpmsFirmwarePagination"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "CpmsFirmwareDiagnosticFile": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Diagnostics file name.",
            "example": "SN-A1B2C3D4_20260619-184205.log"
          },
          "url": {
            "type": "string",
            "description": "Storage URL to download the diagnostics file.",
            "example": "https://blob.phevnix.com/diagnostics/SN-A1B2C3D4/SN-A1B2C3D4_20260619-184205.log"
          },
          "size": {
            "type": "integer",
            "description": "File size in bytes.",
            "format": "int64",
            "example": 204800
          },
          "uploadedAt": {
            "description": "UTC timestamp the file was uploaded (blob last-modified).",
            "format": "date-time",
            "example": "2026-06-19T18:43:30Z"
          }
        }
      },
      "CpmsFirmwareDiagnosticFilesResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CpmsFirmwareDiagnosticFile"
            },
            "description": "Uploaded diagnostics files for the charger, newest first."
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "CpmsFirmwareDiagnosticsData": {
        "type": "object",
        "properties": {
          "chargerId": {
            "type": "string",
            "description": "Stable charger UUID.",
            "format": "uuid",
            "example": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b"
          },
          "serialNumber": {
            "type": [
              "null",
              "string"
            ],
            "description": "Manufacturer hardware serial number, if reported.",
            "example": "SN-A1B2C3D4"
          },
          "firmwareVersion": {
            "type": [
              "null",
              "string"
            ],
            "description": "Firmware version last reported by the charger.",
            "example": "1.5.32"
          },
          "ocppVersion": {
            "type": [
              "null",
              "string"
            ],
            "description": "OCPP protocol the charger negotiated.",
            "example": "1.6"
          },
          "ipAddress": {
            "type": [
              "null",
              "string"
            ],
            "description": "Last-known IP address the charger connected from, if recorded.",
            "example": "203.0.113.42"
          },
          "lastHeartbeat": {
            "description": "UTC timestamp of the charger's last heartbeat.",
            "format": "date-time",
            "example": "2026-06-19T18:42:07Z"
          },
          "isOnline": {
            "type": "boolean",
            "description": "True only if a heartbeat arrived within the last 5 minutes.",
            "example": true
          },
          "lastConnectionStatus": {
            "type": [
              "null",
              "string"
            ],
            "description": "Last-recorded CSMS connection status for the charger.",
            "example": "Connected"
          },
          "statusHistory": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CpmsFirmwareStatusHistoryEntry"
            },
            "description": "The most recent charger status changes, newest first."
          },
          "recentOcppMessages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CpmsFirmwareOcppMessage"
            },
            "description": "The most recent OCPP message exchanges with the charger, newest first."
          },
          "ocppMessageCount": {
            "type": "integer",
            "description": "Total number of OCPP messages on record for this charger.",
            "format": "int32",
            "example": 12847
          }
        }
      },
      "CpmsFirmwareDiagnosticsResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsFirmwareDiagnosticsData"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "CpmsFirmwareFetchDiagnosticsData": {
        "type": "object",
        "properties": {
          "chargerId": {
            "type": "string",
            "description": "Stable charger UUID the diagnostics request was sent to.",
            "format": "uuid",
            "example": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b"
          },
          "chargePointId": {
            "type": "string",
            "description": "OCPP charge-point identity (chargePointId) of the station.",
            "example": "CP-IslaVerde-01"
          },
          "fileName": {
            "type": "string",
            "description": "Name of the diagnostics file the charger will upload.",
            "example": "SN-A1B2C3D4_20260619-184205.log"
          },
          "accepted": {
            "type": "boolean",
            "description": "True when the station accepted the GetDiagnostics / GetLog command.",
            "example": true
          },
          "uploadUrl": {
            "type": "string",
            "description": "Storage URL where the uploaded diagnostics file will be readable once the charger completes the upload.",
            "example": "https://blob.phevnix.com/diagnostics/SN-A1B2C3D4/SN-A1B2C3D4_20260619-184205.log"
          },
          "payload": {
            "type": [
              "null",
              "string"
            ],
            "description": "Raw OCPP response payload (JSON) returned by the station for the diagnostics command.",
            "example": "{\"fileName\":\"SN-A1B2C3D4_20260619-184205.log\"}"
          },
          "message": {
            "type": "string",
            "description": "Human-readable guidance on retrieving the uploaded file.",
            "example": "Diagnostics request accepted. The charger uploads the file asynchronously; list it via GET /api/cpms/v1/diagnostic-files?chargerId={id}."
          }
        }
      },
      "CpmsFirmwareFetchDiagnosticsResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsFirmwareFetchDiagnosticsData"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "CpmsFirmwareLastUpdate": {
        "type": "object",
        "properties": {
          "action": {
            "type": "string",
            "description": "OCPP action of the exchange (UpdateFirmware or FirmwareStatusNotification).",
            "example": "FirmwareStatusNotification"
          },
          "direction": {
            "type": "string",
            "description": "Message direction (incoming / outgoing).",
            "example": "incoming"
          },
          "status": {
            "type": "string",
            "description": "Status of the exchange (success / error / pending).",
            "example": "success"
          },
          "payload": {
            "type": "string",
            "description": "Raw request payload (JSON) of the exchange.",
            "example": "{\"status\":\"Installed\"}"
          },
          "response": {
            "type": [
              "null",
              "string"
            ],
            "description": "Raw response payload (JSON) of the exchange, if any.",
            "example": "{}"
          },
          "timestamp": {
            "description": "UTC timestamp of the exchange.",
            "format": "date-time",
            "example": "2026-06-19T18:40:11Z"
          },
          "ocppVersion": {
            "type": "string",
            "description": "OCPP protocol version of the exchange.",
            "example": "1.6"
          }
        }
      },
      "CpmsFirmwareOcppMessage": {
        "type": "object",
        "properties": {
          "timestamp": {
            "description": "UTC timestamp of the message.",
            "format": "date-time",
            "example": "2026-06-19T18:41:55Z"
          },
          "direction": {
            "type": "string",
            "description": "Message direction (incoming / outgoing).",
            "example": "incoming"
          },
          "messageType": {
            "type": "string",
            "description": "OCPP-J message type (Call / CallResult / CallError).",
            "example": "Call"
          },
          "action": {
            "type": "string",
            "description": "OCPP action name (Heartbeat, StatusNotification, MeterValues, …).",
            "example": "Heartbeat"
          },
          "status": {
            "type": "string",
            "description": "Processing status (success / error / pending).",
            "example": "success"
          },
          "responseTimeMs": {
            "type": [
              "null",
              "integer"
            ],
            "description": "Round-trip processing time for the message, in milliseconds, if recorded.",
            "format": "int32",
            "example": 42
          },
          "correlationId": {
            "type": [
              "null",
              "string"
            ],
            "description": "OCPP-J unique message id correlating the request and response.",
            "example": "b2c3d4e5-6f7a-8b9c-0d1e-2f3a4b5c6d7e"
          },
          "ocppVersion": {
            "type": "string",
            "description": "OCPP protocol version of the message.",
            "example": "1.6"
          }
        }
      },
      "CpmsFirmwarePagination": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "description": "1-based page index of this result set.",
            "format": "int32",
            "example": 1
          },
          "pageSize": {
            "type": "integer",
            "description": "Items per page (1–100).",
            "format": "int32",
            "example": 25
          },
          "total": {
            "type": "integer",
            "description": "Total number of items across all pages.",
            "format": "int32",
            "example": 7
          },
          "totalPages": {
            "type": "integer",
            "description": "Total number of pages at the current pageSize.",
            "format": "int32",
            "example": 1
          }
        }
      },
      "CpmsFirmwareStatusData": {
        "type": "object",
        "properties": {
          "chargerId": {
            "type": "string",
            "description": "Stable charger UUID.",
            "format": "uuid",
            "example": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b"
          },
          "currentFirmwareVersion": {
            "type": [
              "null",
              "string"
            ],
            "description": "Firmware version the charger last reported via BootNotification.",
            "example": "1.5.32"
          },
          "ocppVersion": {
            "type": [
              "null",
              "string"
            ],
            "description": "OCPP protocol the charger negotiated.",
            "example": "1.6"
          },
          "isOnline": {
            "type": "boolean",
            "description": "True only if a heartbeat arrived within the last 5 minutes.",
            "example": true
          },
          "lastHeartbeat": {
            "description": "UTC timestamp of the charger's last heartbeat.",
            "format": "date-time",
            "example": "2026-06-19T18:42:07Z"
          },
          "lastFirmwareUpdate": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "description": "The most recent firmware-related OCPP exchange, or null if none recorded.",
                "$ref": "#/components/schemas/CpmsFirmwareLastUpdate"
              }
            ]
          }
        }
      },
      "CpmsFirmwareStatusHistoryEntry": {
        "type": "object",
        "properties": {
          "oldStatus": {
            "type": "string",
            "description": "Charger status before the change.",
            "example": "AVAILABLE"
          },
          "newStatus": {
            "type": "string",
            "description": "Charger status after the change.",
            "example": "FAULTED"
          },
          "errorCode": {
            "type": "string",
            "description": "OCPP error code reported with the status change, if any.",
            "example": "GroundFailure"
          },
          "errorMessage": {
            "type": "string",
            "description": "Human-readable error message reported with the status change, if any.",
            "example": "Residual current detected"
          },
          "vendorErrorCode": {
            "type": "string",
            "description": "Vendor-specific error code reported with the status change, if any.",
            "example": "E-1042"
          },
          "timestamp": {
            "description": "UTC timestamp of the status change.",
            "format": "date-time",
            "example": "2026-06-19T18:30:00Z"
          }
        }
      },
      "CpmsFirmwareStatusResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsFirmwareStatusData"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "CpmsFirmwareUpdateData": {
        "type": "object",
        "properties": {
          "chargerId": {
            "type": "string",
            "description": "Stable charger UUID the OTA update was sent to.",
            "format": "uuid",
            "example": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b"
          },
          "firmwareVersionId": {
            "type": [
              "null",
              "string"
            ],
            "description": "Catalog firmware-version UUID that was applied, or null when a raw location URL was supplied.",
            "format": "uuid",
            "example": "a1c2e3f4-5b6a-4c7d-8e9f-0a1b2c3d4e5f"
          },
          "firmwareVersion": {
            "type": [
              "null",
              "string"
            ],
            "description": "Catalog firmware version string that was applied, or null for a raw location URL.",
            "example": "1.5.32"
          },
          "location": {
            "type": "string",
            "description": "Image URL the charger was instructed to download.",
            "example": "https://firmware.phevnix.com/evlink/evlink-1.5.32.bin"
          },
          "accepted": {
            "type": "boolean",
            "description": "True when the station accepted the UpdateFirmware command.",
            "example": true
          },
          "payload": {
            "type": [
              "null",
              "string"
            ],
            "description": "Raw OCPP response payload (JSON) returned by the station for the UpdateFirmware command.",
            "example": "{\"status\":\"Accepted\"}"
          },
          "message": {
            "type": "string",
            "description": "Human-readable guidance on tracking OTA progress.",
            "example": "UpdateFirmware command accepted. Track progress via the charger's FirmwareStatusNotification (GET /api/cpms/v1/chargers/{id}/firmware/status)."
          }
        }
      },
      "CpmsFirmwareUpdateResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsFirmwareUpdateData"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "CpmsFraudClearHoldResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsFraudClearHoldResult"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-20T18:42:09Z"
          }
        }
      },
      "CpmsFraudClearHoldResult": {
        "type": "object",
        "properties": {
          "driver_id": {
            "type": "string",
            "description": "Stable driver UUID the action targeted.",
            "format": "uuid",
            "example": "1ae38f39-2b4c-4d5e-8f6a-7b8c9d0e1f2a"
          },
          "fraud_hold": {
            "type": "boolean",
            "description": "The driver's hold state AFTER the action — still true if the driver remains over-threshold on another operator's networks.",
            "example": false
          },
          "hold_cleared": {
            "type": "boolean",
            "description": "True when the global hold was actually cleared (the driver is no longer over-threshold anywhere).",
            "example": true
          },
          "sessions_waived": {
            "type": "integer",
            "description": "How many of THIS operator's failed sessions were waived (0 unless waive=true was requested).",
            "format": "int32",
            "example": 2
          }
        }
      },
      "CpmsFraudDriverStatus": {
        "type": "object",
        "properties": {
          "driver_id": {
            "type": "string",
            "description": "Stable driver UUID.",
            "format": "uuid",
            "example": "1ae38f39-2b4c-4d5e-8f6a-7b8c9d0e1f2a"
          },
          "email": {
            "type": "string",
            "description": "Driver's email address.",
            "example": "driver@example.com"
          },
          "phone_verified": {
            "type": "boolean",
            "description": "True when the driver has completed phone verification.",
            "example": true
          },
          "phone_verified_at": {
            "description": "UTC timestamp the driver verified their phone, or null.",
            "format": "date-time",
            "example": "2026-05-30T11:02:00Z"
          },
          "fraud_hold": {
            "type": "boolean",
            "description": "True when the driver is currently held.",
            "example": true
          },
          "fraud_hold_reason": {
            "type": [
              "null",
              "string"
            ],
            "description": "Why the hold was placed, or null.",
            "example": "Unpaid idle-fee balance over threshold"
          },
          "fraud_hold_at": {
            "description": "UTC timestamp the hold was placed, or null.",
            "format": "date-time",
            "example": "2026-06-18T09:21:44Z"
          },
          "outstanding_balance": {
            "type": "number",
            "description": "The driver's outstanding (failed) balance across the operator's networks.",
            "format": "double",
            "example": 12.5
          }
        }
      },
      "CpmsFraudDriverStatusResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsFraudDriverStatus"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-20T18:42:09Z"
          }
        }
      },
      "CpmsFraudErrorResponse": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "description": "Stable machine-readable error code.",
            "example": "not_found"
          },
          "message": {
            "type": "string",
            "description": "Human-readable explanation of the error.",
            "example": "Driver not found"
          },
          "code": {
            "type": [
              "null",
              "string"
            ],
            "description": "Stable machine-readable error code (duplicated from `error`).",
            "example": "not_found"
          },
          "timestamp": {
            "description": "UTC time the error was generated.",
            "format": "date-time",
            "example": "2026-06-20T18:42:09Z"
          }
        }
      },
      "CpmsFraudHold": {
        "type": "object",
        "properties": {
          "driver_id": {
            "type": "string",
            "description": "Stable driver UUID.",
            "format": "uuid",
            "example": "1ae38f39-2b4c-4d5e-8f6a-7b8c9d0e1f2a"
          },
          "email": {
            "type": "string",
            "description": "Driver's email address.",
            "example": "driver@example.com"
          },
          "phone_verified": {
            "type": "boolean",
            "description": "True when the driver has completed phone verification.",
            "example": true
          },
          "reason": {
            "type": [
              "null",
              "string"
            ],
            "description": "Why the hold was placed, or null when no reason was recorded.",
            "example": "Unpaid idle-fee balance over threshold"
          },
          "held_at": {
            "description": "UTC timestamp the hold was placed, or null.",
            "format": "date-time",
            "example": "2026-06-18T09:21:44Z"
          },
          "outstanding_balance": {
            "type": "number",
            "description": "The driver's outstanding (failed) balance across the operator's networks, in the network currency.",
            "format": "double",
            "example": 12.5
          }
        }
      },
      "CpmsFraudHoldsResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CpmsFraudHold"
            },
            "description": "The drivers currently held on the operator's networks."
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-20T18:42:09Z"
          }
        }
      },
      "CpmsGetVariablesRequest": {
        "type": "object",
        "properties": {
          "variables": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CpmsVariableRef"
            }
          }
        }
      },
      "CpmsLifecycleAddConnectorData": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Stable connector UUID of the newly created connector.",
            "format": "uuid",
            "example": "9f1c2b30-4d5e-6a7b-8c9d-0e1f2a3b4c5d"
          },
          "chargerId": {
            "type": "string",
            "description": "UUID of the charger the connector was added to.",
            "format": "uuid",
            "example": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b"
          },
          "connectorNumber": {
            "type": "integer",
            "description": "Connector number on the charger (1-based).",
            "format": "int32",
            "example": 2
          },
          "standard": {
            "type": "string",
            "description": "Plug standard (e.g. IEC_62196_T2, CHADEMO, CCS).",
            "example": "IEC_62196_T2"
          },
          "format": {
            "type": "string",
            "description": "Connector format: SOCKET (untethered) or CABLE (tethered).",
            "example": "SOCKET"
          },
          "powerType": {
            "type": "string",
            "description": "Power delivery type (AC_1_PHASE, AC_3_PHASE, DC).",
            "example": "AC_3_PHASE"
          },
          "maxVoltage": {
            "type": "integer",
            "description": "Maximum voltage (V).",
            "format": "int32",
            "example": 400
          },
          "maxAmperage": {
            "type": "integer",
            "description": "Maximum amperage (A).",
            "format": "int32",
            "example": 32
          },
          "maxPower": {
            "type": "number",
            "description": "Maximum electric power, in kW (stored internally as watts).",
            "format": "double",
            "example": 22
          },
          "created": {
            "type": "boolean",
            "description": "Always true on success.",
            "example": true
          }
        }
      },
      "CpmsLifecycleAddConnectorResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsLifecycleAddConnectorData"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "CpmsLifecycleAssignTariffData": {
        "type": "object",
        "properties": {
          "assignmentId": {
            "type": "string",
            "description": "Stable UUID of the new tariff assignment.",
            "format": "uuid",
            "example": "e5f6a7b8-9c0d-1e2f-3a4b-5c6d7e8f9a0b"
          },
          "tariffId": {
            "type": "string",
            "description": "UUID of the tariff that was assigned.",
            "format": "uuid",
            "example": "b2c3d4e5-6f70-8192-a3b4-c5d6e7f8a9b0"
          },
          "level": {
            "type": "string",
            "description": "Resolved assignment level (Network, Location, Charger, or Connector) — most-specific target wins.",
            "example": "Charger"
          },
          "locationUuid": {
            "type": [
              "null",
              "string"
            ],
            "description": "Location target UUID if supplied, else null.",
            "format": "uuid",
            "example": "a1b2c3d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d"
          },
          "chargerUuid": {
            "type": [
              "null",
              "string"
            ],
            "description": "Charger target UUID if supplied, else null.",
            "format": "uuid",
            "example": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b"
          },
          "connectorUuid": {
            "type": [
              "null",
              "string"
            ],
            "description": "Connector target UUID if supplied, else null.",
            "format": "uuid",
            "example": "9f1c2b30-4d5e-6a7b-8c9d-0e1f2a3b4c5d"
          },
          "assigned": {
            "type": "boolean",
            "description": "Always true on success.",
            "example": true
          }
        }
      },
      "CpmsLifecycleAssignTariffResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsLifecycleAssignTariffData"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "CpmsLifecycleCreateLocationData": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Stable location UUID of the newly created site.",
            "format": "uuid",
            "example": "a1b2c3d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d"
          },
          "name": {
            "type": "string",
            "description": "Display name of the site.",
            "example": "Isla Verde Plaza"
          },
          "address": {
            "type": "string",
            "description": "Street address of the site.",
            "example": "100 Av. Isla Verde"
          },
          "city": {
            "type": "string",
            "description": "City of the site.",
            "example": "Carolina"
          },
          "networkId": {
            "type": "integer",
            "description": "Internal numeric id of the network the site was created on.",
            "format": "int32",
            "example": 3
          },
          "created": {
            "type": "boolean",
            "description": "Always true on success.",
            "example": true
          }
        }
      },
      "CpmsLifecycleCreateLocationResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsLifecycleCreateLocationData"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "CpmsLifecycleDeleteChargerData": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "UUID of the decommissioned charger.",
            "format": "uuid",
            "example": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b"
          },
          "deleted": {
            "type": "boolean",
            "description": "Always true on success.",
            "example": true
          },
          "deactivatedConnectors": {
            "type": "integer",
            "description": "Number of the charger's connectors that were cascade soft-deleted.",
            "format": "int32",
            "example": 2
          },
          "deactivatedAssignments": {
            "type": "integer",
            "description": "Number of active tariff assignments pointing at the charger (or its connectors) that were deactivated.",
            "format": "int32",
            "example": 1
          }
        }
      },
      "CpmsLifecycleDeleteChargerResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsLifecycleDeleteChargerData"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "CpmsLifecycleDeleteConnectorData": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "UUID of the deleted connector.",
            "format": "uuid",
            "example": "9f1c2b30-4d5e-6a7b-8c9d-0e1f2a3b4c5d"
          },
          "deleted": {
            "type": "boolean",
            "description": "Always true on success.",
            "example": true
          },
          "deactivatedAssignments": {
            "type": "integer",
            "description": "Number of active connector-level tariff assignments that were deactivated.",
            "format": "int32",
            "example": 0
          }
        }
      },
      "CpmsLifecycleDeleteConnectorResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsLifecycleDeleteConnectorData"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "CpmsLifecycleDeletedData": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "UUID of the soft-deleted entity.",
            "format": "uuid",
            "example": "a1b2c3d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d"
          },
          "deleted": {
            "type": "boolean",
            "description": "Always true on success.",
            "example": true
          }
        }
      },
      "CpmsLifecycleDeletedResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsLifecycleDeletedData"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "CpmsLifecycleDetachAssignmentData": {
        "type": "object",
        "properties": {
          "assignmentId": {
            "type": "string",
            "description": "UUID of the assignment that was detached.",
            "format": "uuid",
            "example": "e5f6a7b8-9c0d-1e2f-3a4b-5c6d7e8f9a0b"
          },
          "detached": {
            "type": "boolean",
            "description": "True once the assignment has been deactivated.",
            "example": true
          }
        }
      },
      "CpmsLifecycleDetachAssignmentResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsLifecycleDetachAssignmentData"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "CpmsLifecycleErrorResponse": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "description": "Stable machine-readable error slug.",
            "example": "not_found"
          },
          "message": {
            "type": "string",
            "description": "Human-readable explanation of the error.",
            "example": "Charger '4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b' was not found."
          },
          "code": {
            "type": [
              "null",
              "string"
            ],
            "description": "Stable machine-readable error code (defaults to the error slug when not set explicitly).",
            "example": "not_found"
          },
          "timestamp": {
            "description": "UTC time the error was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          },
          "details": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "description": "Optional field-level validation details (field name → messages), or null."
          }
        }
      },
      "CpmsLifecycleRegisterChargerData": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Stable charger UUID of the newly created charger.",
            "format": "uuid",
            "example": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b"
          },
          "uid": {
            "type": "string",
            "description": "OCPP charge-point identity (chargePointId) — set from the supplied serial.",
            "example": "CP-IslaVerde-01"
          },
          "evseId": {
            "type": "string",
            "description": "Short, printable EVSE identifier generated for the charger.",
            "example": "PR-A1B2C3"
          },
          "serialNumber": {
            "type": "string",
            "description": "Hardware serial number recorded for the charger.",
            "example": "SN-A1B2C3D4"
          },
          "status": {
            "type": "string",
            "description": "Initial OCPP status (UNKNOWN unless a status was supplied).",
            "example": "UNKNOWN"
          },
          "networkId": {
            "type": "integer",
            "description": "Internal numeric id of the network the charger was created on.",
            "format": "int32",
            "example": 3
          },
          "locationId": {
            "type": [
              "null",
              "string"
            ],
            "description": "UUID of the location the charger was assigned to, or null if unassigned.",
            "format": "uuid",
            "example": "a1b2c3d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d"
          },
          "created": {
            "type": "boolean",
            "description": "Always true on success.",
            "example": true
          }
        }
      },
      "CpmsLifecycleRegisterChargerResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsLifecycleRegisterChargerData"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "CpmsLifecycleTariffAssignment": {
        "type": "object",
        "properties": {
          "assignmentId": {
            "type": "string",
            "description": "Stable tariff-assignment UUID.",
            "format": "uuid",
            "example": "e5f6a7b8-9c0d-1e2f-3a4b-5c6d7e8f9a0b"
          },
          "level": {
            "type": "string",
            "description": "Assignment level (Network, Location, Charger, or Connector).",
            "example": "Charger"
          },
          "locationId": {
            "type": [
              "null",
              "integer"
            ],
            "description": "Internal numeric location id the assignment targets, or null.",
            "format": "int32",
            "example": 12
          },
          "chargerId": {
            "type": [
              "null",
              "integer"
            ],
            "description": "Internal numeric charger id the assignment targets, or null.",
            "format": "int32",
            "example": 45
          },
          "connectorId": {
            "type": [
              "null",
              "integer"
            ],
            "description": "Internal numeric connector id the assignment targets, or null.",
            "format": "int32",
            "example": 89
          },
          "startDate": {
            "description": "UTC time the assignment became active, or null.",
            "format": "date-time",
            "example": "2026-06-01T12:00:00Z"
          },
          "priority": {
            "type": "integer",
            "description": "Assignment priority (lower = higher precedence).",
            "format": "int32",
            "example": 0
          }
        }
      },
      "CpmsLifecycleTariffAssignmentListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CpmsLifecycleTariffAssignment"
            },
            "description": "The tariff's active assignments."
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "CpmsLifecycleUpdatedData": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "UUID of the updated entity.",
            "format": "uuid",
            "example": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b"
          },
          "updated": {
            "type": "boolean",
            "description": "Always true on success.",
            "example": true
          }
        }
      },
      "CpmsLifecycleUpdatedResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsLifecycleUpdatedData"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "CpmsLifecycleUpgradeRequiredResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Always false on this error.",
            "example": false
          },
          "error": {
            "type": "string",
            "description": "Always 'upgrade_required'.",
            "example": "upgrade_required"
          },
          "code": {
            "type": "string",
            "description": "Always 'upgrade_required'.",
            "example": "upgrade_required"
          },
          "message": {
            "type": "string",
            "description": "Human-readable explanation including the current tier and connector cap.",
            "example": "This network is on the Free tier (max 2 connectors). Upgrade to add more."
          },
          "currentTier": {
            "type": "string",
            "description": "The network's current subscription tier / plan type.",
            "example": "Free"
          },
          "maxConnectors": {
            "type": "integer",
            "description": "Maximum connectors allowed on the current tier.",
            "format": "int32",
            "example": 2
          },
          "timestamp": {
            "description": "UTC time the error was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "CpmsLimitDimensionDto": {
        "type": "object",
        "properties": {
          "tierLimit": {
            "type": [
              "null",
              "integer"
            ],
            "description": "Your subscription tier's hard ceiling for this resource. null = unlimited on your plan.",
            "format": "int32",
            "example": 50
          },
          "selfLimit": {
            "type": [
              "null",
              "integer"
            ],
            "description": "The cap YOU set on yourself (guard-rail), at or below the tier ceiling. null = no self-restriction.",
            "format": "int32",
            "example": 10
          },
          "effectiveLimit": {
            "type": [
              "null",
              "integer"
            ],
            "description": "The cap actually enforced when you provision = the lower of tierLimit and selfLimit. null = unlimited.",
            "format": "int32",
            "example": 10
          },
          "currentUsage": {
            "type": "integer",
            "description": "How many you currently have toward this cap (chargers: all non-deleted; connectors: billable = enabled on a stationed charger).",
            "format": "int32",
            "example": 3
          },
          "remaining": {
            "type": [
              "null",
              "integer"
            ],
            "description": "effectiveLimit - currentUsage, floored at 0. null = unlimited.",
            "format": "int32",
            "example": 7
          }
        }
      },
      "CpmsLimitIncreaseListItemDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "example": "b2d3e4f5-6a7b-8c9d-0e1f-2a3b4c5d6e7f"
          },
          "resource": {
            "type": "string",
            "example": "connectors"
          },
          "currentTierLimit": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32",
            "example": 50
          },
          "requestedLimit": {
            "type": "integer",
            "format": "int32",
            "example": 200
          },
          "status": {
            "type": "string",
            "example": "pending"
          },
          "reason": {
            "type": [
              "null",
              "string"
            ],
            "example": "Rolling out 150 connectors across 30 sites in Q3."
          },
          "createdAt": {
            "format": "date-time",
            "example": "2026-06-23T18:22:00Z"
          },
          "reviewedAt": {
            "format": "date-time",
            "example": "2026-06-24T09:00:00Z"
          },
          "reviewNote": {
            "type": [
              "null",
              "string"
            ],
            "example": "Approved — Pro ceiling raised to 200 connectors."
          }
        }
      },
      "CpmsLimitIncreaseListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CpmsLimitIncreaseListItemDto"
            }
          },
          "success": {
            "type": "boolean"
          },
          "timestamp": {
            "format": "date-time"
          }
        }
      },
      "CpmsLimitIncreaseRequestBody": {
        "type": "object",
        "properties": {
          "resource": {
            "type": "string",
            "description": "Which dimension to raise: \"chargers\" or \"connectors\".",
            "example": "connectors"
          },
          "requestedLimit": {
            "type": "integer",
            "description": "The new ceiling you are requesting. Must be greater than your current tier ceiling.",
            "format": "int32",
            "example": 200
          },
          "reason": {
            "type": [
              "null",
              "string"
            ],
            "description": "Optional justification to help the review (e.g. expected fleet size, rollout timeline).",
            "example": "Rolling out 150 connectors across 30 sites in Q3."
          }
        }
      },
      "CpmsLimitIncreaseResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsLimitIncreaseResultDto"
          },
          "success": {
            "type": "boolean"
          },
          "timestamp": {
            "format": "date-time"
          }
        }
      },
      "CpmsLimitIncreaseResultDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Public id of the request — track its status via GET /limits/increase-requests.",
            "format": "uuid",
            "example": "b2d3e4f5-6a7b-8c9d-0e1f-2a3b4c5d6e7f"
          },
          "resource": {
            "type": "string",
            "example": "connectors"
          },
          "currentTierLimit": {
            "type": [
              "null",
              "integer"
            ],
            "description": "Your tier ceiling at the time of the request. null = the tier was already unlimited.",
            "format": "int32",
            "example": 50
          },
          "requestedLimit": {
            "type": "integer",
            "format": "int32",
            "example": 200
          },
          "status": {
            "type": "string",
            "description": "pending | approved | denied | cancelled. New requests start pending.",
            "example": "pending"
          },
          "createdAt": {
            "format": "date-time",
            "example": "2026-06-23T18:22:00Z"
          },
          "nextStep": {
            "type": "string",
            "description": "Human-readable guidance on how this request will be handled for your plan.",
            "example": "Upgrade to Pro for a higher ceiling, or our team will review this request."
          }
        }
      },
      "CpmsLoadBalancingData": {
        "type": "object",
        "properties": {
          "stationId": {
            "type": "string",
            "description": "Station (location) UUID.",
            "format": "uuid",
            "example": "a1b2c3d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d"
          },
          "enabled": {
            "type": "boolean",
            "description": "Whether load balancing is enabled for this station.",
            "example": true
          },
          "strategy": {
            "type": "string",
            "description": "Active allocation strategy (from the highest-priority rule), or 'equal' if no rules exist.",
            "example": "equal"
          },
          "siteMaxPowerKw": {
            "type": "number",
            "description": "Site-wide power cap for the station, in kW.",
            "format": "double",
            "example": 150
          },
          "safetyMarginPct": {
            "type": "number",
            "description": "Safety margin reserved below the site cap, as a percentage (15–40).",
            "format": "double",
            "example": 15
          },
          "currentDrawKw": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "description": "Total power currently drawn across the station's chargers, in kW.",
            "format": "double",
            "example": 29.6
          },
          "allocatedKw": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "description": "Total power currently allocated across the station's chargers, in kW.",
            "format": "double",
            "example": 44
          },
          "evses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CpmsLoadEvse"
            },
            "description": "Per-charger allocation/draw snapshot for the station."
          },
          "rules": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CpmsLoadRule"
            },
            "description": "Load-balancing rules configured for the station, ordered by priority."
          }
        }
      },
      "CpmsLoadBalancingRequest": {
        "type": "object",
        "properties": {
          "enabled": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "strategy": {
            "type": [
              "null",
              "string"
            ]
          },
          "siteMaxPowerKw": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "safetyMarginPct": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "priorities": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "integer",
              "format": "int32"
            }
          }
        }
      },
      "CpmsLoadBalancingResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsLoadBalancingData"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "CpmsLoadBalancingUpdateData": {
        "type": "object",
        "properties": {
          "stationId": {
            "type": "string",
            "description": "Station (location) UUID that was updated.",
            "format": "uuid",
            "example": "a1b2c3d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d"
          },
          "updated": {
            "type": "boolean",
            "description": "Always true on success.",
            "example": true
          }
        }
      },
      "CpmsLoadBalancingUpdateResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsLoadBalancingUpdateData"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "CpmsLoadClearLimitData": {
        "type": "object",
        "properties": {
          "chargerId": {
            "type": "string",
            "description": "UUID of the charger the cap was cleared from.",
            "format": "uuid",
            "example": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b"
          },
          "connectorNumber": {
            "type": "integer",
            "description": "Connector number the cap was cleared from (1-based).",
            "format": "int32",
            "example": 1
          },
          "profileId": {
            "type": "integer",
            "description": "OCPP charging-profile id that was cleared (the reserved operator-cap id).",
            "format": "int32",
            "example": 90001
          },
          "accepted": {
            "type": "boolean",
            "description": "True if the station accepted the ClearChargingProfile request.",
            "example": true
          },
          "reason": {
            "type": [
              "null",
              "string"
            ],
            "description": "Null when accepted; otherwise the station's rejection reason.",
            "example": "The charger rejected the request."
          },
          "retryable": {
            "type": "boolean",
            "description": "True if the request can be safely retried (transient failure / charger offline).",
            "example": false
          }
        }
      },
      "CpmsLoadClearLimitResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsLoadClearLimitData"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "CpmsLoadCompositeScheduleData": {
        "type": "object",
        "properties": {
          "chargerId": {
            "type": "string",
            "description": "UUID of the charger the schedule was read from.",
            "format": "uuid",
            "example": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b"
          },
          "connectorNumber": {
            "type": "integer",
            "description": "Connector number the schedule applies to (1-based).",
            "format": "int32",
            "example": 1
          },
          "durationSeconds": {
            "type": "integer",
            "description": "Look-ahead window of the composite schedule, in seconds (1–86400).",
            "format": "int32",
            "example": 3600
          },
          "unit": {
            "type": "string",
            "description": "Charging rate unit of the schedule: A (amps) or W (watts).",
            "example": "A"
          },
          "accepted": {
            "type": "boolean",
            "description": "True if the station accepted and answered the GetCompositeSchedule request.",
            "example": true
          },
          "schedule": {
            "description": "Raw OCPP composite-schedule payload returned by the station, or null if it did not answer. Shape follows the OCPP 1.6 GetCompositeSchedule.conf payload."
          }
        }
      },
      "CpmsLoadCompositeScheduleResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsLoadCompositeScheduleData"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "CpmsLoadErrorResponse": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "description": "Stable machine-readable error code (duplicated as `code`).",
            "example": "not_found"
          },
          "code": {
            "type": "string",
            "description": "Stable machine-readable error code.",
            "example": "not_found"
          },
          "message": {
            "type": "string",
            "description": "Human-readable explanation of the error.",
            "example": "Charger '4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b' not found"
          }
        }
      },
      "CpmsLoadEvse": {
        "type": "object",
        "properties": {
          "evseId": {
            "type": [
              "null",
              "string"
            ],
            "description": "Short, printable EVSE identifier for the charger.",
            "example": "PR-A1B2C3"
          },
          "physicalRef": {
            "type": [
              "null",
              "string"
            ],
            "description": "Operator-set physical reference / label on the unit.",
            "example": "Bay 3"
          },
          "maxPowerKw": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "description": "Rated maximum power of the charger, in kW.",
            "format": "double",
            "example": 22
          },
          "allocatedKw": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "description": "Power currently allocated to this charger by load balancing, in kW.",
            "format": "double",
            "example": 11
          },
          "currentDrawKw": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "description": "Power currently being drawn by this charger, in kW.",
            "format": "double",
            "example": 7.4
          },
          "status": {
            "type": "string",
            "description": "Last OCPP status reported by the charger.",
            "example": "Charging"
          },
          "priority": {
            "type": "integer",
            "description": "Load-balancing priority for this charger (lower = higher priority).",
            "format": "int32",
            "example": 0
          }
        }
      },
      "CpmsLoadGetLimitData": {
        "type": "object",
        "properties": {
          "chargerId": {
            "type": "string",
            "description": "UUID of the charger the limit was read from.",
            "format": "uuid",
            "example": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b"
          },
          "connectorNumber": {
            "type": "integer",
            "description": "Connector number on the charger the limit applies to (1-based).",
            "format": "int32",
            "example": 1
          },
          "unit": {
            "type": "string",
            "description": "Charging rate unit of the schedule: A (amps) or W (watts).",
            "example": "A"
          },
          "accepted": {
            "type": "boolean",
            "description": "True if the station accepted and answered the GetCompositeSchedule request.",
            "example": true
          },
          "schedule": {
            "description": "Raw OCPP composite-schedule payload returned by the station, or null if it did not answer. Shape follows the OCPP 1.6 GetCompositeSchedule.conf payload."
          }
        }
      },
      "CpmsLoadGetLimitResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsLoadGetLimitData"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "CpmsLoadRebalanceData": {
        "type": "object",
        "properties": {
          "stationId": {
            "type": "string",
            "description": "Station identifier (UUID, numeric LocationId, or slug) as supplied on the request path.",
            "example": "a1b2c3d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d"
          },
          "rebalanced": {
            "type": "boolean",
            "description": "Always true once the rebalance has been accepted/queued.",
            "example": true
          }
        }
      },
      "CpmsLoadRebalanceResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsLoadRebalanceData"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "CpmsLoadRule": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Stable rule UUID.",
            "format": "uuid",
            "example": "7c2b1a90-4d5e-6a7b-8c9d-0e1f2a3b4c5d"
          },
          "name": {
            "type": [
              "null",
              "string"
            ],
            "description": "Human-readable rule name.",
            "example": "Default"
          },
          "description": {
            "type": [
              "null",
              "string"
            ],
            "description": "Free-text description of what the rule does.",
            "example": "Default load balancing rule"
          },
          "loadLimitKw": {
            "type": [
              "null",
              "number"
            ],
            "description": "Power cap this rule enforces, in kW.",
            "format": "double",
            "example": 150
          },
          "loadLimitAmps": {
            "type": [
              "null",
              "integer"
            ],
            "description": "Current cap this rule enforces, in amps.",
            "format": "int32",
            "example": 0
          },
          "numberOfPhases": {
            "type": "integer",
            "description": "Number of electrical phases the rule assumes (1 or 3).",
            "format": "int32",
            "example": 3
          },
          "strategy": {
            "type": [
              "null",
              "string"
            ],
            "description": "Primary allocation strategy (e.g. equal, priority, firstComeFirstServed).",
            "example": "equal"
          },
          "fallbackStrategy": {
            "type": [
              "null",
              "string"
            ],
            "description": "Strategy used when the primary cannot be satisfied.",
            "example": "equal"
          },
          "priority": {
            "type": "integer",
            "description": "Rule evaluation priority (lower = evaluated first).",
            "format": "int32",
            "example": 0
          },
          "isActive": {
            "type": "boolean",
            "description": "Whether the rule is currently active.",
            "example": true
          },
          "startTime": {
            "type": [
              "null",
              "string"
            ],
            "description": "Optional daily start time the rule is in force (HH:mm), or null for all day.",
            "example": "00:00"
          },
          "endTime": {
            "type": [
              "null",
              "string"
            ],
            "description": "Optional daily end time the rule is in force (HH:mm), or null for all day.",
            "example": "23:59"
          },
          "daysOfWeek": {
            "type": [
              "null",
              "string"
            ],
            "description": "Days of week the rule applies, as a digit string (0=Sun … 6=Sat), e.g. '0123456' for every day.",
            "example": "0123456"
          }
        }
      },
      "CpmsLoadSetLimitData": {
        "type": "object",
        "properties": {
          "chargerId": {
            "type": "string",
            "description": "UUID of the charger the limit was applied to.",
            "format": "uuid",
            "example": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b"
          },
          "connectorNumber": {
            "type": "integer",
            "description": "Connector number the limit was applied to (1-based).",
            "format": "int32",
            "example": 1
          },
          "unit": {
            "type": "string",
            "description": "Charging rate unit of the applied limit: A (amps) or W (watts).",
            "example": "A"
          },
          "limit": {
            "type": "number",
            "description": "The numeric limit requested, in the given unit.",
            "format": "double",
            "example": 32
          },
          "profileId": {
            "type": "integer",
            "description": "OCPP charging-profile id used for this operator cap (reserved id range so it is individually clearable).",
            "format": "int32",
            "example": 90001
          },
          "accepted": {
            "type": "boolean",
            "description": "True if the station accepted the SetChargingProfile request.",
            "example": true
          },
          "reason": {
            "type": [
              "null",
              "string"
            ],
            "description": "Null when accepted; otherwise the station's rejection reason.",
            "example": "The charger rejected the request."
          },
          "retryable": {
            "type": "boolean",
            "description": "True if the request can be safely retried (transient failure / charger offline).",
            "example": false
          }
        }
      },
      "CpmsLoadSetLimitResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsLoadSetLimitData"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "CpmsLocationDetail": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Stable location UUID.",
            "format": "uuid",
            "example": "2a1b9c80-3d4e-4f5a-9b6c-7d8e9f0a1b2c"
          },
          "name": {
            "type": "string",
            "description": "Human-readable site name.",
            "example": "Isla Verde Plaza"
          },
          "address": {
            "type": "string",
            "description": "Street address of the site.",
            "example": "8169 Calle Marginal"
          },
          "city": {
            "type": "string",
            "description": "City the site is in.",
            "example": "Carolina"
          },
          "state": {
            "type": "string",
            "description": "State/region the site is in.",
            "example": "PR"
          },
          "country": {
            "type": "string",
            "description": "Country code/name of the site.",
            "example": "US"
          },
          "postalCode": {
            "type": "string",
            "description": "Postal/ZIP code of the site.",
            "example": "00979"
          },
          "networkId": {
            "type": "integer",
            "description": "Internal numeric id of the owning network.",
            "format": "int32",
            "example": 3
          }
        }
      },
      "CpmsLocationListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CpmsLocationSummary"
            },
            "description": "The page of locations."
          },
          "pagination": {
            "$ref": "#/components/schemas/CpmsPagination"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "CpmsLocationResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsLocationDetail"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "CpmsLocationSummary": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Stable location UUID. Use it in GET /locations/{id}.",
            "format": "uuid",
            "example": "2a1b9c80-3d4e-4f5a-9b6c-7d8e9f0a1b2c"
          },
          "name": {
            "type": "string",
            "description": "Human-readable site name.",
            "example": "Isla Verde Plaza"
          },
          "address": {
            "type": "string",
            "description": "Street address of the site.",
            "example": "8169 Calle Marginal"
          },
          "city": {
            "type": "string",
            "description": "City the site is in.",
            "example": "Carolina"
          },
          "state": {
            "type": "string",
            "description": "State/region the site is in.",
            "example": "PR"
          },
          "country": {
            "type": "string",
            "description": "Country code/name of the site.",
            "example": "US"
          },
          "networkId": {
            "type": "integer",
            "description": "Internal numeric id of the owning network.",
            "format": "int32",
            "example": 3
          }
        }
      },
      "CpmsManufacturerDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Manufacturer id (stable UUID).",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "description": "Manufacturer display name, e.g. \"ABB\"."
          },
          "logoUrl": {
            "type": [
              "null",
              "string"
            ],
            "description": "URL of the manufacturer logo, if set."
          }
        }
      },
      "CpmsManufacturerListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CpmsManufacturerDto"
            }
          },
          "pagination": {
            "$ref": "#/components/schemas/CpmsCatalogPagination"
          },
          "success": {
            "type": "boolean"
          },
          "timestamp": {
            "format": "date-time"
          }
        }
      },
      "CpmsManufacturerResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsManufacturerDto"
          },
          "success": {
            "type": "boolean"
          },
          "timestamp": {
            "format": "date-time"
          }
        }
      },
      "CpmsMonitoringEventDto": {
        "type": "object",
        "properties": {
          "eventId": {
            "type": [
              "null",
              "integer"
            ],
            "description": "Charger-assigned monitor/event id, if present.",
            "format": "int32"
          },
          "timestamp": {
            "description": "When the event was reported (UTC).",
            "format": "date-time"
          },
          "trigger": {
            "type": [
              "null",
              "string"
            ],
            "description": "What triggered it: Alerting, Delta, or Periodic."
          },
          "actualValue": {
            "type": [
              "null",
              "string"
            ],
            "description": "The monitored variable's value at trigger time."
          },
          "techCode": {
            "type": [
              "null",
              "string"
            ],
            "description": "Vendor tech code, if any."
          },
          "techInfo": {
            "type": [
              "null",
              "string"
            ],
            "description": "Vendor tech info, if any."
          },
          "cleared": {
            "type": "boolean",
            "description": "Whether the alert condition has since cleared."
          },
          "transactionId": {
            "type": [
              "null",
              "string"
            ],
            "description": "Associated transaction id, if the event occurred during a session."
          },
          "componentName": {
            "type": [
              "null",
              "string"
            ],
            "description": "OCPP component the monitor is on."
          },
          "componentInstance": {
            "type": [
              "null",
              "string"
            ]
          },
          "variableName": {
            "type": [
              "null",
              "string"
            ],
            "description": "OCPP variable the monitor watches."
          },
          "variableInstance": {
            "type": [
              "null",
              "string"
            ]
          },
          "severity": {
            "type": "integer",
            "description": "Severity (0 = highest/most urgent per OCPP).",
            "format": "int32"
          }
        }
      },
      "CpmsMonitoringEventListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CpmsMonitoringEventDto"
            }
          },
          "chargerId": {
            "type": "string",
            "description": "The charger these events were reported by.",
            "format": "uuid"
          },
          "count": {
            "type": "integer",
            "description": "Number of events returned.",
            "format": "int32"
          },
          "success": {
            "type": "boolean"
          },
          "timestamp": {
            "format": "date-time"
          }
        }
      },
      "CpmsNetworkListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CpmsNetworkSummary"
            },
            "description": "The networks this key is authorized to operate."
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "CpmsNetworkSummary": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Stable network UUID — the public network handle used in headers and filters.",
            "format": "uuid",
            "example": "1ae38f39-2b4c-4d5e-8f6a-7b8c9d0e1f2a"
          },
          "name": {
            "type": "string",
            "description": "Human-readable network name.",
            "example": "Isla Verde Network"
          }
        }
      },
      "CpmsObservabilityDelivery": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Stable delivery UUID. Use it in the retry endpoint.",
            "format": "uuid",
            "example": "d1e2f3a4-5b6c-7d8e-9f01-2a3b4c5d6e7f"
          },
          "event_type": {
            "type": "string",
            "description": "Event type that triggered this delivery (e.g. session.completed).",
            "example": "session.completed"
          },
          "http_status": {
            "type": [
              "null",
              "integer"
            ],
            "description": "HTTP status code returned by the endpoint, or null if no response was received.",
            "format": "int32",
            "example": 200
          },
          "success": {
            "type": "boolean",
            "description": "True only when the delivery reached terminal Delivered status.",
            "example": true
          },
          "status": {
            "type": "string",
            "description": "Delivery state (Pending, Delivered, Failed, …).",
            "example": "Delivered"
          },
          "attempts": {
            "type": "integer",
            "description": "Number of delivery attempts made so far.",
            "format": "int32",
            "example": 1
          },
          "max_attempts": {
            "type": "integer",
            "description": "Maximum attempts before the delivery is abandoned.",
            "format": "int32",
            "example": 5
          },
          "duration_ms": {
            "type": [
              "null",
              "integer"
            ],
            "description": "Round-trip duration of the last attempt, in milliseconds, or null if not yet attempted.",
            "format": "int32",
            "example": 142
          },
          "next_retry_at": {
            "description": "UTC time the next retry is scheduled, or null when terminal / not scheduled.",
            "format": "date-time",
            "example": "2026-06-19T18:47:09Z"
          },
          "created_at": {
            "description": "UTC time the delivery was created.",
            "format": "date-time",
            "example": "2026-06-19T18:42:00Z"
          },
          "completed_at": {
            "description": "UTC time the delivery reached a terminal state, or null if still in flight.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "CpmsObservabilityDeliveryListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CpmsObservabilityDelivery"
            },
            "description": "The page of delivery attempts, most recent first."
          },
          "pagination": {
            "$ref": "#/components/schemas/CpmsObservabilityPagination"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "CpmsObservabilityErrorResponse": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "description": "Stable machine-readable error slug.",
            "example": "not_found"
          },
          "message": {
            "type": "string",
            "description": "Human-readable explanation of the error.",
            "example": "Webhook subscription not found"
          },
          "code": {
            "type": [
              "null",
              "string"
            ],
            "description": "Stable machine-readable error code (defaults to the error slug when not set explicitly).",
            "example": "not_found"
          },
          "timestamp": {
            "description": "UTC time the error was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          },
          "details": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "description": "Optional field-level validation details (field name → messages), or null."
          }
        }
      },
      "CpmsObservabilityEventTypesResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The canonical catalog of subscribable webhook event types."
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "CpmsObservabilityPagination": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "description": "1-based page index of this result set.",
            "format": "int32",
            "example": 1
          },
          "pageSize": {
            "type": "integer",
            "description": "Items requested per page (1–100; defaults to 20).",
            "format": "int32",
            "example": 20
          },
          "total": {
            "type": "integer",
            "description": "Total number of deliveries across all pages.",
            "format": "int32",
            "example": 42
          },
          "totalPages": {
            "type": "integer",
            "description": "Total number of pages at the current pageSize.",
            "format": "int32",
            "example": 3
          }
        }
      },
      "CpmsObservabilityRetryData": {
        "type": "object",
        "properties": {
          "delivery_id": {
            "type": "string",
            "description": "UUID of the delivery that was re-enqueued.",
            "format": "uuid",
            "example": "d1e2f3a4-5b6c-7d8e-9f01-2a3b4c5d6e7f"
          },
          "retry_enqueued": {
            "type": "boolean",
            "description": "Always true once the delivery has been marked Pending for retry.",
            "example": true
          }
        }
      },
      "CpmsObservabilityRetryResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsObservabilityRetryData"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "CpmsObservabilityWebhook": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Stable webhook subscription UUID.",
            "format": "uuid",
            "example": "c7e1a2b3-4d5e-6f70-8192-a3b4c5d6e7f8"
          },
          "url": {
            "type": "string",
            "description": "HTTPS endpoint deliveries are POSTed to.",
            "example": "https://example.com/webhooks/phevnix"
          },
          "events": {
            "type": "string",
            "description": "Subscribed event types as a comma-separated list, or '*' for all events.",
            "example": "session.started,session.completed"
          },
          "description": {
            "type": [
              "null",
              "string"
            ],
            "description": "Optional operator-set label for the subscription.",
            "example": "Billing pipeline"
          },
          "is_active": {
            "type": "boolean",
            "description": "Whether the subscription is currently active (false once auto-disabled by repeated failures).",
            "example": true
          },
          "consecutive_failures": {
            "type": "integer",
            "description": "Count of consecutive failed deliveries; resets to 0 on a success or on re-enable.",
            "format": "int32",
            "example": 0
          },
          "disabled_at": {
            "description": "UTC time the subscription was auto-disabled, or null if active.",
            "format": "date-time",
            "example": "2026-06-19T18:42:07Z"
          },
          "disabled_reason": {
            "type": [
              "null",
              "string"
            ],
            "description": "Why the subscription was disabled, or null if active.",
            "example": "Too many consecutive delivery failures"
          },
          "created_at": {
            "description": "UTC time the subscription was created.",
            "format": "date-time",
            "example": "2026-06-01T12:00:00Z"
          },
          "updated_at": {
            "description": "UTC time the subscription was last updated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "CpmsObservabilityWebhookListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CpmsObservabilityWebhook"
            },
            "description": "The operator's webhook subscriptions."
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "CpmsObservabilityWebhookResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsObservabilityWebhook"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "CpmsObservabilityWebhookTestData": {
        "type": "object",
        "properties": {
          "webhook_id": {
            "type": "string",
            "description": "UUID of the subscription the test event was enqueued for.",
            "format": "uuid",
            "example": "c7e1a2b3-4d5e-6f70-8192-a3b4c5d6e7f8"
          },
          "test_enqueued": {
            "type": "boolean",
            "description": "Always true once the synthetic webhook.test event has been enqueued.",
            "example": true
          }
        }
      },
      "CpmsObservabilityWebhookTestResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsObservabilityWebhookTestData"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "CpmsOcppQueryResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Whether the charger accepted/answered the command."
          },
          "chargerId": {
            "type": "string",
            "description": "The charger the command was sent to.",
            "format": "uuid"
          },
          "command": {
            "type": [
              "null",
              "string"
            ],
            "description": "The OCPP action invoked."
          },
          "ocppVersion": {
            "type": [
              "null",
              "string"
            ],
            "description": "The charger's OCPP version."
          },
          "errorCode": {
            "type": [
              "null",
              "string"
            ],
            "description": "Error code if the command failed/was rejected."
          },
          "errorDescription": {
            "type": [
              "null",
              "string"
            ],
            "description": "Human-readable error detail, if any."
          },
          "payload": {
            "type": [
              "null",
              "string"
            ],
            "description": "Raw OCPP response payload (JSON) returned by the charger — the GetChargingProfiles result set."
          },
          "timestamp": {
            "format": "date-time"
          }
        }
      },
      "CpmsOrgAddTeamMemberResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsOrgAddTeamMemberResult"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-20T18:42:09Z"
          }
        }
      },
      "CpmsOrgAddTeamMemberResult": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Stable user UUID of the added member.",
            "format": "uuid",
            "example": "11111111-2222-4333-8444-555566667777"
          },
          "email": {
            "type": [
              "null",
              "string"
            ],
            "description": "Added member's email address.",
            "example": "manager@islaverde.example.com"
          },
          "role": {
            "type": "string",
            "description": "Role the member was granted.",
            "example": "Manager"
          },
          "added": {
            "type": "boolean",
            "description": "Always true on success.",
            "example": true
          }
        }
      },
      "CpmsOrgApiKey": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Stable API key UUID. Use it in DELETE /api-keys/{id}.",
            "format": "uuid",
            "example": "9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d"
          },
          "name": {
            "type": "string",
            "description": "Operator-chosen key name.",
            "example": "Reporting agent (read-only)"
          },
          "description": {
            "type": [
              "null",
              "string"
            ],
            "description": "Operator-chosen key description.",
            "example": "Pulls nightly CDR exports."
          },
          "keyType": {
            "type": "string",
            "description": "Key type (e.g. Rest).",
            "example": "Rest"
          },
          "visibility": {
            "type": "string",
            "description": "Key visibility (Private for CPMS server-side keys).",
            "example": "Private"
          },
          "apiFamily": {
            "type": [
              "null",
              "string"
            ],
            "description": "API family the key belongs to (cpms).",
            "example": "cpms"
          },
          "keyClass": {
            "type": [
              "null",
              "string"
            ],
            "description": "Key class (ServerSide for CPMS keys).",
            "example": "ServerSide"
          },
          "keyEnvironment": {
            "type": [
              "null",
              "string"
            ],
            "description": "Key environment (live | test).",
            "example": "live"
          },
          "keyPrefix": {
            "type": "string",
            "description": "Leading characters of the key (safe to display).",
            "example": "pk_cpms_live_"
          },
          "last4": {
            "type": "string",
            "description": "Trailing characters of the key (safe to display).",
            "example": "a1b2"
          },
          "permissions": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The cpms:* scopes granted to this key."
          },
          "expiresAt": {
            "description": "UTC expiry, or null when the key never expires.",
            "format": "date-time",
            "example": "2027-01-01T00:00:00Z"
          },
          "isRevoked": {
            "type": "boolean",
            "description": "True when the key has been revoked.",
            "example": false
          },
          "isExpired": {
            "type": "boolean",
            "description": "True when the key's expiry has passed.",
            "example": false
          },
          "lastUsedAt": {
            "description": "UTC timestamp the key was last used, or null.",
            "format": "date-time",
            "example": "2026-06-19T03:00:00Z"
          },
          "usageCount": {
            "type": "integer",
            "description": "Number of requests served by this key.",
            "format": "int32",
            "example": 14820
          },
          "rateLimitPerHour": {
            "type": [
              "null",
              "integer"
            ],
            "description": "Per-hour rate limit for this key, or null for the default.",
            "format": "int32",
            "example": 5000
          },
          "createdAt": {
            "description": "UTC timestamp the key was created.",
            "format": "date-time",
            "example": "2026-03-12T08:00:00Z"
          }
        }
      },
      "CpmsOrgApiKeyListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CpmsOrgApiKey"
            },
            "description": "The operator's CPMS API keys (display fragments only)."
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-20T18:42:09Z"
          }
        }
      },
      "CpmsOrgBilling": {
        "type": "object",
        "properties": {
          "vatRate": {
            "type": "number",
            "description": "VAT / tax rate (percent) applied to invoices; defaults to 0.",
            "format": "double",
            "example": 11.5
          },
          "billingAddress": {
            "type": [
              "null",
              "string"
            ],
            "description": "Billing address for invoices, or null.",
            "example": "100 Av. Isla Verde, Carolina, PR 00979"
          },
          "invoicePrefix": {
            "type": "string",
            "description": "Prefix prepended to invoice numbers; defaults to INV.",
            "example": "INV"
          },
          "paymentTermsDays": {
            "type": "integer",
            "description": "Invoice payment terms in days; defaults to 30.",
            "format": "int32",
            "example": 30
          }
        }
      },
      "CpmsOrgBranding": {
        "type": "object",
        "properties": {
          "primaryColor": {
            "type": [
              "null",
              "string"
            ],
            "description": "Primary brand color (hex), falling back to the legacy PrimaryColorHex column.",
            "example": "#E2231A"
          },
          "secondaryColor": {
            "type": [
              "null",
              "string"
            ],
            "description": "Secondary brand color (hex), falling back to the legacy SecondaryColorHex column.",
            "example": "#1A1A1A"
          },
          "logoUrl": {
            "type": [
              "null",
              "string"
            ],
            "description": "URL of the network logo image, or null.",
            "example": "https://cdn.example.com/logo.svg"
          },
          "faviconUrl": {
            "type": [
              "null",
              "string"
            ],
            "description": "URL of the network favicon, or null.",
            "example": "https://cdn.example.com/favicon.ico"
          }
        }
      },
      "CpmsOrgCreatedApiKey": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Stable API key UUID.",
            "format": "uuid",
            "example": "9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d"
          },
          "name": {
            "type": "string",
            "description": "Operator-chosen key name.",
            "example": "Reporting agent (read-only)"
          },
          "visibility": {
            "type": "string",
            "description": "Key visibility (always Private for CPMS keys).",
            "example": "Private"
          },
          "apiFamily": {
            "type": [
              "null",
              "string"
            ],
            "description": "API family (cpms).",
            "example": "cpms"
          },
          "keyClass": {
            "type": [
              "null",
              "string"
            ],
            "description": "Key class (ServerSide).",
            "example": "ServerSide"
          },
          "keyPrefix": {
            "type": "string",
            "description": "Leading characters of the key (safe to display).",
            "example": "pk_cpms_live_"
          },
          "last4": {
            "type": "string",
            "description": "Trailing characters of the key (safe to display).",
            "example": "a1b2"
          },
          "key": {
            "type": [
              "null",
              "string"
            ],
            "description": "The full plaintext secret. Shown ONCE and never retrievable again — store it now.",
            "example": "pk_cpms_live_3f9a2c8e7b1d4f60a5c3e2d1b0a9f8e7"
          },
          "message": {
            "type": "string",
            "description": "Reminder that the secret will not be shown again.",
            "example": "Store this key securely. It will not be shown again."
          }
        }
      },
      "CpmsOrgCreatedApiKeyResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsOrgCreatedApiKey"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-20T18:42:09Z"
          }
        }
      },
      "CpmsOrgErrorResponse": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "description": "Stable machine-readable error code (duplicated as `code`).",
            "example": "not_found"
          },
          "code": {
            "type": "string",
            "description": "Stable machine-readable error code.",
            "example": "not_found"
          },
          "message": {
            "type": "string",
            "description": "Human-readable explanation of the error.",
            "example": "Network 'c0ffee00-1234-4567-89ab-cdef01234567' not found"
          }
        }
      },
      "CpmsOrgRemoveTeamMemberResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsOrgRemoveTeamMemberResult"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-20T18:42:09Z"
          }
        }
      },
      "CpmsOrgRemoveTeamMemberResult": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Stable user UUID of the removed member.",
            "format": "uuid",
            "example": "11111111-2222-4333-8444-555566667777"
          },
          "removed": {
            "type": "boolean",
            "description": "Always true on success.",
            "example": true
          }
        }
      },
      "CpmsOrgRevokeApiKeyResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsOrgRevokeApiKeyResult"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-20T18:42:09Z"
          }
        }
      },
      "CpmsOrgRevokeApiKeyResult": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Stable API key UUID that was revoked.",
            "format": "uuid",
            "example": "9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d"
          },
          "revoked": {
            "type": "boolean",
            "description": "Always true on success.",
            "example": true
          },
          "deleted": {
            "type": "boolean",
            "description": "Always true on success (the key is soft-deleted).",
            "example": true
          }
        }
      },
      "CpmsOrgSettings": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Stable network UUID.",
            "format": "uuid",
            "example": "c0ffee00-1234-4567-89ab-cdef01234567"
          },
          "name": {
            "type": "string",
            "description": "Network display name.",
            "example": "Isla Verde Charging"
          },
          "description": {
            "type": [
              "null",
              "string"
            ],
            "description": "Network description.",
            "example": "Public charging across the Isla Verde district."
          },
          "contactEmail": {
            "type": [
              "null",
              "string"
            ],
            "description": "Network contact email.",
            "example": "ops@islaverde.example.com"
          },
          "contactPhone": {
            "type": [
              "null",
              "string"
            ],
            "description": "Network contact phone.",
            "example": "+1-787-555-0100"
          },
          "website": {
            "type": [
              "null",
              "string"
            ],
            "description": "Network public website, or null.",
            "example": "https://islaverde.example.com"
          },
          "country": {
            "type": [
              "null",
              "string"
            ],
            "description": "ISO country code for the network.",
            "example": "US"
          },
          "currency": {
            "type": [
              "null",
              "string"
            ],
            "description": "ISO-4217 default currency for the network.",
            "example": "USD"
          },
          "timeZone": {
            "type": "string",
            "description": "IANA time zone; defaults to UTC.",
            "example": "America/Puerto_Rico"
          },
          "isActive": {
            "type": "boolean",
            "description": "True when the network is active.",
            "example": true
          },
          "branding": {
            "description": "Branding fields for white-labeling.",
            "$ref": "#/components/schemas/CpmsOrgBranding"
          },
          "billing": {
            "description": "Billing / invoicing fields.",
            "$ref": "#/components/schemas/CpmsOrgBilling"
          }
        }
      },
      "CpmsOrgSettingsResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsOrgSettings"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-20T18:42:09Z"
          }
        }
      },
      "CpmsOrgSettingsUpdateResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsOrgSettingsUpdateResult"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-20T18:42:09Z"
          }
        }
      },
      "CpmsOrgSettingsUpdateResult": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Stable network UUID that was updated.",
            "format": "uuid",
            "example": "c0ffee00-1234-4567-89ab-cdef01234567"
          },
          "updated": {
            "type": "boolean",
            "description": "Always true on success.",
            "example": true
          }
        }
      },
      "CpmsOrgTeamListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CpmsOrgTeamMember"
            },
            "description": "The operator's team members."
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-20T18:42:09Z"
          }
        }
      },
      "CpmsOrgTeamMember": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Stable user UUID. Use it in PUT/DELETE /team/{id}.",
            "format": "uuid",
            "example": "11111111-2222-4333-8444-555566667777"
          },
          "email": {
            "type": "string",
            "description": "Member's email address.",
            "example": "manager@islaverde.example.com"
          },
          "firstName": {
            "type": "string",
            "description": "Member's first name.",
            "example": "Maria"
          },
          "lastName": {
            "type": "string",
            "description": "Member's last name.",
            "example": "Rivera"
          },
          "role": {
            "type": "string",
            "description": "Member's role on this network (Admin, Manager, TechSupport, Viewer).",
            "example": "Manager"
          },
          "joinedAt": {
            "description": "UTC timestamp the member joined the network.",
            "format": "date-time",
            "example": "2026-03-12T08:00:00Z"
          },
          "lastActiveAt": {
            "description": "UTC timestamp of the member's last login, or null.",
            "format": "date-time",
            "example": "2026-06-19T17:55:00Z"
          }
        }
      },
      "CpmsOrgUpdateTeamMemberResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsOrgUpdateTeamMemberResult"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-20T18:42:09Z"
          }
        }
      },
      "CpmsOrgUpdateTeamMemberResult": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Stable user UUID of the updated member.",
            "format": "uuid",
            "example": "11111111-2222-4333-8444-555566667777"
          },
          "role": {
            "type": "string",
            "description": "The role now assigned.",
            "example": "Admin"
          },
          "updated": {
            "type": "boolean",
            "description": "Always true on success.",
            "example": true
          }
        }
      },
      "CpmsPagination": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "description": "1-based page index of this result set.",
            "format": "int32",
            "example": 1
          },
          "pageSize": {
            "type": "integer",
            "description": "Items requested per page (1–100; defaults to 50).",
            "format": "int32",
            "example": 50
          },
          "total": {
            "type": "integer",
            "description": "Total number of items across all pages.",
            "format": "int32",
            "example": 137
          },
          "totalPages": {
            "type": "integer",
            "description": "Total number of pages at the current pageSize.",
            "format": "int32",
            "example": 3
          }
        }
      },
      "CpmsProvisioningLimitsDto": {
        "type": "object",
        "properties": {
          "planCode": {
            "type": "string",
            "description": "The plan code driving the tier ceilings (free | pro | enterprise | unmanaged).",
            "example": "pro"
          },
          "chargers": {
            "description": "Charger-count cap dimension.",
            "$ref": "#/components/schemas/CpmsLimitDimensionDto"
          },
          "connectors": {
            "description": "Billable-connector cap dimension — the per-connector-billed dimension, so the meaningful spend guard.",
            "$ref": "#/components/schemas/CpmsLimitDimensionDto"
          }
        }
      },
      "CpmsProvisioningLimitsResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsProvisioningLimitsDto"
          },
          "success": {
            "type": "boolean"
          },
          "timestamp": {
            "format": "date-time"
          }
        }
      },
      "CpmsRebootRequest": {
        "type": "object",
        "properties": {
          "resetType": {
            "type": "string"
          }
        }
      },
      "CpmsRefundRequest": {
        "type": "object",
        "properties": {
          "amount": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "reason": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "CpmsRegisterChargerRequest": {
        "required": [
          "serial"
        ],
        "type": "object",
        "properties": {
          "serial": {
            "type": "string"
          },
          "networkUuid": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "locationUuid": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "modelUuid": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "status": {
            "type": [
              "null",
              "string"
            ]
          },
          "firmwareVersion": {
            "type": [
              "null",
              "string"
            ]
          },
          "ocppVersion": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "CpmsRemoteControlRebootData": {
        "type": "object",
        "properties": {
          "chargerId": {
            "type": "string",
            "description": "Stable charger UUID the reset command was sent to.",
            "format": "uuid",
            "example": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b"
          },
          "resetType": {
            "type": "string",
            "description": "Reset kind requested: 'Soft' (graceful restart) or 'Hard' (power-cycle).",
            "example": "Soft"
          },
          "accepted": {
            "type": "boolean",
            "description": "True when the station accepted the Reset command.",
            "example": true
          },
          "message": {
            "type": "string",
            "description": "Human-readable confirmation of the dispatched reset.",
            "example": "Soft reset command sent successfully"
          }
        }
      },
      "CpmsRemoteControlRebootResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsRemoteControlRebootData"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "CpmsRemoteControlStartData": {
        "type": "object",
        "properties": {
          "chargerId": {
            "type": "string",
            "description": "Stable charger UUID the start command was sent to.",
            "format": "uuid",
            "example": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b"
          },
          "connectorNumber": {
            "type": "integer",
            "description": "Connector number (1-based) the session was started on.",
            "format": "int32",
            "example": 1
          },
          "idTag": {
            "type": "string",
            "description": "Authorization idTag the session was started under.",
            "example": "OPERATOR-START-001"
          },
          "accepted": {
            "type": "boolean",
            "description": "True when the station accepted the RemoteStartTransaction command.",
            "example": true
          },
          "deviceType": {
            "type": "string",
            "description": "Device transport the command was dispatched over (e.g. OCPP, IoT).",
            "example": "OCPP"
          },
          "transactionId": {
            "type": [
              "null",
              "string"
            ],
            "description": "OCPP transaction id when the device returns one immediately, else null (the session row is created on StartTransaction).",
            "example": "80231"
          },
          "message": {
            "type": "string",
            "description": "Human-readable guidance on how to resolve the resulting session.",
            "example": "Start command accepted. The session row is created when the charger confirms StartTransaction; resolve it via GET /api/cpms/v1/sessions?status=ACTIVE."
          }
        }
      },
      "CpmsRemoteControlStartResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsRemoteControlStartData"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "CpmsRemoteControlStopData": {
        "type": "object",
        "properties": {
          "chargerId": {
            "type": "string",
            "description": "Stable charger UUID the stop command was sent to.",
            "format": "uuid",
            "example": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b"
          },
          "sessionId": {
            "type": "string",
            "description": "UUID of the charging session that is being stopped.",
            "format": "uuid",
            "example": "7c1d2e30-5f6a-4b7c-8d9e-0a1b2c3d4e5f"
          },
          "status": {
            "type": "string",
            "description": "Transitional session status after the stop command was accepted (always 'STOPPING').",
            "example": "STOPPING"
          },
          "accepted": {
            "type": "boolean",
            "description": "True when the station accepted the RemoteStopTransaction command.",
            "example": true
          },
          "deviceType": {
            "type": "string",
            "description": "Device transport the command was dispatched over (e.g. OCPP, IoT).",
            "example": "OCPP"
          },
          "message": {
            "type": "string",
            "description": "Human-readable note that final session data arrives with the charger's StopTransaction.",
            "example": "Stop command accepted. Final session data arrives with the charger's StopTransaction."
          }
        }
      },
      "CpmsRemoteControlStopResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsRemoteControlStopData"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "CpmsRemoteStartRequest": {
        "type": "object",
        "properties": {
          "idTag": {
            "type": "string"
          },
          "connectorNumber": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "CpmsRemoteStopRequest": {
        "type": "object",
        "properties": {
          "sessionId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          }
        }
      },
      "CpmsSessionDetail": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Stable session UUID.",
            "format": "uuid",
            "example": "7c3d8e21-9a4b-4c5d-8e6f-1a2b3c4d5e6f"
          },
          "status": {
            "type": "string",
            "description": "Session lifecycle state (PENDING, ACTIVE, COMPLETED, FAULTED, …).",
            "example": "ACTIVE"
          },
          "chargerId": {
            "type": "integer",
            "description": "Internal numeric id of the charger this session ran on.",
            "format": "int32",
            "example": 48
          },
          "networkId": {
            "type": "integer",
            "description": "Internal numeric id of the owning network.",
            "format": "int32",
            "example": 3
          },
          "energyKwh": {
            "type": "number",
            "description": "Energy delivered so far, in kWh.",
            "format": "double",
            "example": 18.42
          },
          "currentPowerKw": {
            "type": [
              "null",
              "number"
            ],
            "description": "Instantaneous power draw, in kW, or null when not charging.",
            "format": "double",
            "example": 11
          },
          "total": {
            "type": [
              "null",
              "number"
            ],
            "description": "Total charged so far in the session currency, or null if not yet costed.",
            "format": "double",
            "example": 7.95
          },
          "currency": {
            "type": "string",
            "description": "ISO 4217 currency code the session is billed in.",
            "example": "USD"
          },
          "startedAt": {
            "description": "UTC timestamp the session started.",
            "format": "date-time",
            "example": "2026-06-19T17:05:11Z"
          },
          "endedAt": {
            "description": "UTC timestamp the session ended, or null if still active.",
            "format": "date-time",
            "example": "2026-06-19T18:12:43Z"
          }
        }
      },
      "CpmsSessionEventDto": {
        "type": "object",
        "properties": {
          "eventType": {
            "type": [
              "null",
              "string"
            ],
            "description": "Event type, e.g. \"SessionStarted\", \"MeterValues\", \"SessionStopped\"."
          },
          "details": {
            "type": [
              "null",
              "string"
            ],
            "description": "Free-form event detail payload (string)."
          },
          "occurredAt": {
            "description": "When the event occurred (UTC).",
            "format": "date-time"
          }
        }
      },
      "CpmsSessionEventListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CpmsSessionEventDto"
            }
          },
          "sessionId": {
            "type": "string",
            "description": "The session these events belong to.",
            "format": "uuid"
          },
          "count": {
            "type": "integer",
            "description": "Number of events returned.",
            "format": "int32"
          },
          "success": {
            "type": "boolean"
          },
          "timestamp": {
            "format": "date-time"
          }
        }
      },
      "CpmsSessionListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CpmsSessionSummary"
            },
            "description": "The page of sessions."
          },
          "pagination": {
            "$ref": "#/components/schemas/CpmsPagination"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "CpmsSessionMeterValuesResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicApiMeterValueDto"
            },
            "description": "Meter-value samples for the session, oldest first (charging-curve order)."
          },
          "count": {
            "type": "integer",
            "description": "Number of samples returned in this response.",
            "format": "int32",
            "example": 96
          },
          "truncated": {
            "type": "boolean",
            "description": "True when the session has more samples than the requested limit and the curve was cut off.",
            "example": false
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "CpmsSessionResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsSessionDetail"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "CpmsSessionSummary": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Stable session UUID. Use it in GET /sessions/{id}.",
            "format": "uuid",
            "example": "7c3d8e21-9a4b-4c5d-8e6f-1a2b3c4d5e6f"
          },
          "status": {
            "type": "string",
            "description": "Session lifecycle state (PENDING, ACTIVE, COMPLETED, FAULTED, …).",
            "example": "COMPLETED"
          },
          "chargerId": {
            "type": "integer",
            "description": "Internal numeric id of the charger this session ran on. Prefer chargerUuid as the public handle.",
            "format": "int32",
            "example": 48
          },
          "chargerUuid": {
            "type": [
              "null",
              "string"
            ],
            "description": "Public UUID of the charger this session ran on — use it in GET /chargers/{uuid}. Null if the charger was since hard-removed.",
            "format": "uuid",
            "example": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b"
          },
          "chargerUid": {
            "type": [
              "null",
              "string"
            ],
            "description": "OCPP charge-point identity (chargePointId) of the charger — the human-readable label shown in operator UIs.",
            "example": "CP-IslaVerde-01"
          },
          "energyKwh": {
            "type": "number",
            "description": "Energy delivered over the session, in kWh.",
            "format": "double",
            "example": 18.42
          },
          "total": {
            "type": [
              "null",
              "number"
            ],
            "description": "Total charged for the session in the session currency, or null if not yet costed.",
            "format": "double",
            "example": 7.95
          },
          "currency": {
            "type": "string",
            "description": "ISO 4217 currency code the session was billed in.",
            "example": "USD"
          },
          "startedAt": {
            "description": "UTC timestamp the session started.",
            "format": "date-time",
            "example": "2026-06-19T17:05:11Z"
          },
          "endedAt": {
            "description": "UTC timestamp the session ended, or null if still active.",
            "format": "date-time",
            "example": "2026-06-19T18:12:43Z"
          }
        }
      },
      "CpmsSetDisplayMessageRequest": {
        "required": [
          "id",
          "message"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Operator-chosen message id (used later to clear it).",
            "format": "int32"
          },
          "message": {
            "description": "The message content.",
            "$ref": "#/components/schemas/CpmsDisplayMessageContent"
          },
          "priority": {
            "type": [
              "null",
              "string"
            ],
            "description": "When to show it: AlwaysFront, InFront, NormalCycle (default), Idle, Charging, Faulted."
          },
          "state": {
            "type": [
              "null",
              "string"
            ],
            "description": "Charger state the message applies to (e.g. Charging, Idle); null = any."
          },
          "startDateTime": { },
          "endDateTime": { }
        }
      },
      "CpmsSetLimitsRequest": {
        "type": "object",
        "properties": {
          "maxChargers": {
            "type": [
              "null",
              "integer"
            ],
            "description": "Self-imposed maximum number of chargers. null clears the cap (tier ceiling applies). Must be 0..tierLimit.",
            "format": "int32",
            "example": 10
          },
          "maxConnectors": {
            "type": [
              "null",
              "integer"
            ],
            "description": "Self-imposed maximum number of billable connectors. null clears the cap. Must be 0..tierLimit.",
            "format": "int32",
            "example": 20
          }
        }
      },
      "CpmsSetVariableMonitoringRequest": {
        "required": [
          "setMonitoringData"
        ],
        "type": "object",
        "properties": {
          "setMonitoringData": {
            "type": "array",
            "items": {
              "type": "object"
            },
            "description": "OCPP SetMonitoringData entries — each describes a monitor (component, variable, value, type: UpperThreshold/LowerThreshold/Delta/Periodic, severity 0-9). Passed through to the charger."
          }
        }
      },
      "CpmsSetVariablesRequest": {
        "type": "object",
        "properties": {
          "variables": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CpmsVariableSet"
            }
          }
        }
      },
      "CpmsSmartChargingLimitRequest": {
        "type": "object",
        "properties": {
          "connectorNumber": {
            "type": "integer",
            "format": "int32"
          },
          "unit": {
            "type": "string"
          },
          "limit": {
            "type": "number",
            "format": "double"
          }
        }
      },
      "CpmsTariffDetail": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Stable tariff UUID.",
            "format": "uuid",
            "example": "5e6f1a2b-3c4d-4e5f-8a9b-0c1d2e3f4a5b"
          },
          "name": {
            "type": "string",
            "description": "Human-readable tariff name.",
            "example": "Standard AC"
          },
          "type": {
            "type": "string",
            "description": "Tariff type/category (e.g. AD_HOC_PAYMENT, REGULAR).",
            "example": "REGULAR"
          },
          "currency": {
            "type": "string",
            "description": "ISO 4217 currency code the rates are quoted in.",
            "example": "USD"
          },
          "energyRate": {
            "type": [
              "null",
              "number"
            ],
            "description": "Price per kWh of energy delivered, or null if energy is not billed.",
            "format": "double",
            "example": 0.35
          },
          "timeRate": {
            "type": [
              "null",
              "number"
            ],
            "description": "Price per hour of charging time, or null if time is not billed.",
            "format": "double",
            "example": 2
          },
          "idleRate": {
            "type": "number",
            "description": "Idle/overstay fee per hour once charging completes.",
            "format": "double",
            "example": 0.5
          },
          "sessionFee": {
            "type": [
              "null",
              "number"
            ],
            "description": "Flat fee charged per session, or null if there is no session fee.",
            "format": "double",
            "example": 1
          },
          "idleGracePeriodMinutes": {
            "type": "integer",
            "description": "Minutes after charging completes before the idle/overstay fee begins to accrue.",
            "format": "int32",
            "example": 15
          },
          "idleFeeEnabled": {
            "type": "boolean",
            "description": "Whether the idle/overstay fee is charged at all.",
            "example": true
          },
          "idleFeeMaximum": {
            "type": [
              "null",
              "number"
            ],
            "description": "Per-session cap on accrued idle fees, or null for no cap.",
            "format": "double",
            "example": 20
          },
          "taxRate": {
            "type": [
              "null",
              "number"
            ],
            "description": "Tax percentage applied to the subtotal (0–100), or null if untaxed.",
            "format": "double",
            "example": 11.5
          },
          "peakHoursStart": {
            "type": [
              "null",
              "string"
            ],
            "description": "Local start of the daily peak window as \"HH:mm\", or null when no peak window is set.",
            "example": "17:00"
          },
          "peakHoursEnd": {
            "type": [
              "null",
              "string"
            ],
            "description": "Local end of the daily peak window as \"HH:mm\" (exclusive), or null.",
            "example": "21:00"
          },
          "peakMultiplier": {
            "type": [
              "null",
              "number"
            ],
            "description": "Rate multiplier applied to energy + time when a session starts within the peak window (e.g. 1.5 = +50%). Null = no peak surcharge.",
            "format": "double",
            "example": 1.5
          },
          "weekendMultiplier": {
            "type": [
              "null",
              "number"
            ],
            "description": "Rate multiplier applied to energy + time for sessions starting on Sat/Sun; takes precedence over the peak multiplier. Null = no weekend adjustment.",
            "format": "double",
            "example": 0.8
          },
          "isFree": {
            "type": "boolean",
            "description": "True if this tariff carries no charge to the driver.",
            "example": false
          }
        }
      },
      "CpmsTariffListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CpmsTariffSummary"
            },
            "description": "The page of tariffs."
          },
          "pagination": {
            "$ref": "#/components/schemas/CpmsPagination"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "CpmsTariffResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsTariffDetail"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "CpmsTariffSummary": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Stable tariff UUID. Use it in GET /tariffs/{id}.",
            "format": "uuid",
            "example": "5e6f1a2b-3c4d-4e5f-8a9b-0c1d2e3f4a5b"
          },
          "name": {
            "type": "string",
            "description": "Human-readable tariff name.",
            "example": "Standard AC"
          },
          "type": {
            "type": "string",
            "description": "Tariff type/category (e.g. AD_HOC_PAYMENT, REGULAR).",
            "example": "REGULAR"
          },
          "currency": {
            "type": "string",
            "description": "ISO 4217 currency code the rates are quoted in.",
            "example": "USD"
          },
          "energyRate": {
            "type": [
              "null",
              "number"
            ],
            "description": "Price per kWh of energy delivered, or null if energy is not billed.",
            "format": "double",
            "example": 0.35
          },
          "timeRate": {
            "type": [
              "null",
              "number"
            ],
            "description": "Price per hour of charging time, or null if time is not billed.",
            "format": "double",
            "example": 2
          },
          "idleRate": {
            "type": "number",
            "description": "Idle/overstay fee per hour once charging completes.",
            "format": "double",
            "example": 0.5
          },
          "isFree": {
            "type": "boolean",
            "description": "True if this tariff carries no charge to the driver.",
            "example": false
          }
        }
      },
      "CpmsTariffWriteCreateResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsTariffWriteCreateResult"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-20T18:42:09Z"
          }
        }
      },
      "CpmsTariffWriteCreateResult": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Stable UUID of the newly-created tariff.",
            "format": "uuid",
            "example": "d4e5f6a7-b8c9-4012-8345-6789abcdef01"
          },
          "name": {
            "type": "string",
            "description": "Tariff name.",
            "example": "Standard AC"
          },
          "currency": {
            "type": "string",
            "description": "ISO-4217 currency of the tariff (defaults to the network currency when omitted).",
            "example": "USD"
          },
          "networkId": {
            "type": "string",
            "description": "UUID of the network the tariff was created on.",
            "format": "uuid",
            "example": "c0ffee00-1234-4567-89ab-cdef01234567"
          },
          "created": {
            "type": "boolean",
            "description": "Always true on success.",
            "example": true
          }
        }
      },
      "CpmsTariffWriteDeleteResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsTariffWriteDeleteResult"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-20T18:42:09Z"
          }
        }
      },
      "CpmsTariffWriteDeleteResult": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Stable UUID of the soft-deleted tariff.",
            "format": "uuid",
            "example": "d4e5f6a7-b8c9-4012-8345-6789abcdef01"
          },
          "deleted": {
            "type": "boolean",
            "description": "Always true on success.",
            "example": true
          },
          "deactivatedAssignments": {
            "type": "integer",
            "description": "How many active tariff assignments were cascade-deactivated by the delete.",
            "format": "int32",
            "example": 3
          }
        }
      },
      "CpmsTariffWriteErrorResponse": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "description": "Stable machine-readable error category.",
            "example": "not_found"
          },
          "message": {
            "type": "string",
            "description": "Human-readable explanation of the error.",
            "example": "Tariff not found"
          },
          "code": {
            "type": [
              "null",
              "string"
            ],
            "description": "Stable machine-readable error code an agent branches on.",
            "example": "tariff_not_found"
          },
          "timestamp": {
            "description": "UTC time the error was generated.",
            "format": "date-time",
            "example": "2026-06-20T18:42:09Z"
          }
        }
      },
      "CpmsTariffWriteUpdateResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsTariffWriteUpdateResult"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-20T18:42:09Z"
          }
        }
      },
      "CpmsTariffWriteUpdateResult": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Stable UUID of the updated tariff.",
            "format": "uuid",
            "example": "d4e5f6a7-b8c9-4012-8345-6789abcdef01"
          },
          "updated": {
            "type": "boolean",
            "description": "Always true on success.",
            "example": true
          }
        }
      },
      "CpmsTriggerMessageRequest": {
        "type": "object",
        "properties": {
          "requestedMessage": {
            "type": "string"
          },
          "connectorNumber": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          }
        }
      },
      "CpmsUnlockConnectorRequest": {
        "type": "object",
        "properties": {
          "connectorNumber": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "CpmsUpdateChargerRequest": {
        "type": "object",
        "properties": {
          "status": {
            "type": [
              "null",
              "string"
            ]
          },
          "physicalReference": {
            "type": [
              "null",
              "string"
            ]
          },
          "floorLevel": {
            "type": [
              "null",
              "string"
            ]
          },
          "locationUuid": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          }
        }
      },
      "CpmsUpdateFirmwareRequest": {
        "type": "object",
        "properties": {
          "firmwareVersionId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "location": {
            "type": [
              "null",
              "string"
            ]
          },
          "retrieveDate": {
            "type": [
              "null",
              "string"
            ]
          },
          "retries": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "retryInterval": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          }
        }
      },
      "CpmsUpdateLocationRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "address": {
            "type": [
              "null",
              "string"
            ]
          },
          "city": {
            "type": [
              "null",
              "string"
            ]
          },
          "state": {
            "type": [
              "null",
              "string"
            ]
          },
          "country": {
            "type": [
              "null",
              "string"
            ]
          },
          "postalCode": {
            "type": [
              "null",
              "string"
            ]
          },
          "contactPhone": {
            "type": [
              "null",
              "string"
            ]
          },
          "timezone": {
            "type": [
              "null",
              "string"
            ]
          },
          "latitude": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "format": "double"
          },
          "longitude": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "format": "double"
          }
        }
      },
      "CpmsUpdateSettingsRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "contactEmail": {
            "type": [
              "null",
              "string"
            ]
          },
          "contactPhone": {
            "type": [
              "null",
              "string"
            ]
          },
          "website": {
            "type": [
              "null",
              "string"
            ]
          },
          "timeZone": {
            "type": [
              "null",
              "string"
            ]
          },
          "currency": {
            "type": [
              "null",
              "string"
            ]
          },
          "branding": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CpmsBrandingRequest"
              }
            ]
          },
          "billing": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CpmsBillingRequest"
              }
            ]
          }
        }
      },
      "CpmsUpdateTariffRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "energyRate": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "timeRate": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "sessionFee": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "idleRate": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "idleGracePeriodMinutes": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "idleFeeEnabled": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "idleFeeMaximum": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "taxRate": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "peakHoursStart": {
            "type": [
              "null",
              "string"
            ]
          },
          "peakHoursEnd": {
            "type": [
              "null",
              "string"
            ]
          },
          "peakMultiplier": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "weekendMultiplier": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "isFree": {
            "type": [
              "null",
              "boolean"
            ]
          }
        }
      },
      "CpmsUpdateTeamMemberRequest": {
        "type": "object",
        "properties": {
          "role": {
            "type": "string"
          }
        }
      },
      "CpmsUpdateWebhookRequest": {
        "required": [
          "url",
          "events",
          "description",
          "isActive"
        ],
        "type": "object",
        "properties": {
          "url": {
            "type": [
              "null",
              "string"
            ]
          },
          "events": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            }
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "isActive": {
            "type": [
              "null",
              "boolean"
            ]
          }
        }
      },
      "CpmsUsageDay": {
        "type": "object",
        "properties": {
          "date": {
            "description": "UTC date (midnight) the counts apply to.",
            "format": "date-time",
            "example": "2026-06-19T00:00:00Z"
          },
          "family": {
            "type": "string",
            "description": "API family the usage was on (cpms or emsp).",
            "example": "cpms"
          },
          "env": {
            "type": "string",
            "description": "Environment the usage was on (live or test).",
            "example": "live"
          },
          "requests": {
            "type": "integer",
            "description": "Number of API requests counted that day.",
            "format": "int64",
            "example": 1842
          },
          "units": {
            "type": "integer",
            "description": "Metered billing units consumed that day.",
            "format": "int64",
            "example": 1842
          }
        }
      },
      "CpmsUsageResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsUsageSummary"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "CpmsUsageSummary": {
        "type": "object",
        "properties": {
          "totalRequests": {
            "type": "integer",
            "description": "Sum of requests across every returned day.",
            "format": "int64",
            "example": 54210
          },
          "totalUnits": {
            "type": "integer",
            "description": "Sum of metered units across every returned day.",
            "format": "int64",
            "example": 54210
          },
          "sinceUtc": {
            "description": "Start of the rollup window (UTC, inclusive).",
            "format": "date-time",
            "example": "2026-05-20T00:00:00Z"
          },
          "daily": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CpmsUsageDay"
            },
            "description": "Per-day consumption rows, newest first."
          }
        }
      },
      "CpmsVariableRef": {
        "type": "object",
        "properties": {
          "component": {
            "type": [
              "null",
              "string"
            ]
          },
          "variable": {
            "type": "string"
          }
        }
      },
      "CpmsVariableSet": {
        "type": "object",
        "properties": {
          "component": {
            "type": [
              "null",
              "string"
            ]
          },
          "variable": {
            "type": "string"
          },
          "value": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "CpmsWaiveIdleFeeRequest": {
        "type": "object",
        "properties": {
          "amount": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "reason": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "CpmsWebhookWriteCreateResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsWebhookWriteCreateResult"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-20T18:42:09Z"
          }
        }
      },
      "CpmsWebhookWriteCreateResult": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Stable UUID of the new webhook subscription. Use it in DELETE /webhooks/{webhookId}.",
            "format": "uuid",
            "example": "e1d2c3b4-a596-4877-8c9d-0e1f2a3b4c5d"
          },
          "url": {
            "type": "string",
            "description": "The HTTPS endpoint events will be POSTed to.",
            "example": "https://hooks.example.com/phevnix"
          },
          "events": {
            "type": "string",
            "description": "Comma-separated event types subscribed to, or '*' for all events.",
            "example": "session.started,session.completed"
          },
          "description": {
            "type": "string",
            "description": "Operator-chosen description of the subscription.",
            "example": "Billing reconciliation hook"
          },
          "hmac_secret": {
            "type": "string",
            "description": "The HMAC signing secret for verifying delivery signatures. Returned ONCE on create — store it now.",
            "example": "whsec_3f9a2c8e7b1d4f60a5c3e2d1b0a9f8e7"
          },
          "is_active": {
            "type": "boolean",
            "description": "True when the subscription is active and will receive deliveries.",
            "example": true
          },
          "created_at": {
            "description": "UTC timestamp the subscription was created.",
            "format": "date-time",
            "example": "2026-06-20T18:42:09Z"
          }
        }
      },
      "CpmsWebhookWriteDeleteResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CpmsWebhookWriteDeleteResult"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-20T18:42:09Z"
          }
        }
      },
      "CpmsWebhookWriteDeleteResult": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Stable UUID of the deleted webhook subscription.",
            "format": "uuid",
            "example": "e1d2c3b4-a596-4877-8c9d-0e1f2a3b4c5d"
          },
          "deleted": {
            "type": "boolean",
            "description": "Always true on success.",
            "example": true
          }
        }
      },
      "CpmsWebhookWriteErrorResponse": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "description": "Stable machine-readable error category.",
            "example": "invalid_url"
          },
          "message": {
            "type": "string",
            "description": "Human-readable explanation of the error.",
            "example": "A valid HTTPS URL is required"
          },
          "code": {
            "type": [
              "null",
              "string"
            ],
            "description": "Stable machine-readable error code an agent branches on.",
            "example": "invalid_url"
          },
          "timestamp": {
            "description": "UTC time the error was generated.",
            "format": "date-time",
            "example": "2026-06-20T18:42:09Z"
          }
        }
      },
      "CreateAlertChannelRequest": {
        "required": [
          "name",
          "channelType"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "channelType": {
            "type": "string"
          },
          "configuration": {
            "type": [
              "null",
              "string"
            ]
          },
          "integrationSlug": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "CreateAlertRuleRequest": {
        "required": [
          "name",
          "triggerEventTypes"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "triggerEventTypes": {
            "type": "string"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "severityFilter": {
            "type": [
              "null",
              "string"
            ]
          },
          "cooldownSeconds": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "channelIds": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "integer",
              "format": "int32"
            }
          }
        }
      },
      "CreateApiKeyRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "keyType": {
            "$ref": "#/components/schemas/ApiKeyType"
          },
          "visibility": {
            "$ref": "#/components/schemas/ApiKeyVisibility"
          },
          "permissions": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            }
          },
          "expiresAt": { },
          "rateLimitPerHour": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "allowedIPs": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            }
          }
        }
      },
      "CreateCouponRequest": {
        "required": [
          "name",
          "percentOff",
          "amountOffCents",
          "currency",
          "durationInMonths",
          "maxRedemptions",
          "promoCode"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "percentOff": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int64"
          },
          "amountOffCents": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int64"
          },
          "currency": {
            "type": [
              "null",
              "string"
            ]
          },
          "durationInMonths": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "maxRedemptions": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int64"
          },
          "promoCode": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "CreateDriverRequest": {
        "required": [
          "email"
        ],
        "type": "object",
        "properties": {
          "email": {
            "type": "string"
          },
          "firstName": {
            "type": [
              "null",
              "string"
            ]
          },
          "lastName": {
            "type": [
              "null",
              "string"
            ]
          },
          "phoneNumber": {
            "type": [
              "null",
              "string"
            ]
          },
          "address": {
            "type": [
              "null",
              "string"
            ]
          },
          "city": {
            "type": [
              "null",
              "string"
            ]
          },
          "state": {
            "type": [
              "null",
              "string"
            ]
          },
          "postalCode": {
            "type": [
              "null",
              "string"
            ]
          },
          "country": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "CreateGatewayRequest": {
        "required": [
          "gatewayChargePointId"
        ],
        "type": "object",
        "properties": {
          "gatewayChargePointId": {
            "type": "string"
          },
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "locationId": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "locationUuid": {
            "type": [
              "null",
              "string"
            ]
          },
          "serialNumber": {
            "type": [
              "null",
              "string"
            ]
          },
          "offlineAuthPolicy": {
            "type": [
              "null",
              "string"
            ]
          },
          "uuid": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          }
        }
      },
      "CreateInternalApiKeyRequest": {
        "required": [
          "networkId",
          "name"
        ],
        "type": "object",
        "properties": {
          "networkId": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "keyType": {
            "$ref": "#/components/schemas/ApiKeyType"
          },
          "permissions": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            }
          },
          "expiresAt": { },
          "rateLimitPerHour": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "allowedIPs": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            }
          },
          "apiFamily": {
            "type": "string"
          },
          "visibility": {
            "$ref": "#/components/schemas/ApiKeyVisibility"
          }
        }
      },
      "CreateNetworkRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "contactEmail": {
            "type": [
              "null",
              "string"
            ]
          },
          "contactPhone": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "CreateOcpiConnectionRequest": {
        "required": [
          "label"
        ],
        "type": "object",
        "properties": {
          "label": {
            "type": "string"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "expiresAt": { }
        }
      },
      "CreatePlatformAlertChannelRequest": {
        "required": [
          "name",
          "channelType"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "channelType": {
            "type": "string"
          },
          "configuration": {
            "type": [
              "null",
              "string"
            ]
          },
          "integrationSlug": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "CreatePlatformAlertRuleRequest": {
        "required": [
          "name",
          "triggerEventTypes"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "triggerEventTypes": {
            "type": "string"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "severityFilter": {
            "type": [
              "null",
              "string"
            ]
          },
          "cooldownSeconds": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "channelIds": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "integer",
              "format": "int32"
            }
          }
        }
      },
      "CreateSubscriptionRequest": {
        "required": [
          "plan"
        ],
        "type": "object",
        "properties": {
          "plan": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "CreateTariffRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "currency": {
            "type": [
              "null",
              "string"
            ]
          },
          "energyRate": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "timeRate": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "sessionFee": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "idleRate": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "idleGracePeriodMinutes": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "peakHoursStart": {
            "type": [
              "null",
              "string"
            ]
          },
          "peakHoursEnd": {
            "type": [
              "null",
              "string"
            ]
          },
          "peakMultiplier": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "weekendMultiplier": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "taxRate": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "isFree": {
            "type": [
              "null",
              "boolean"
            ]
          }
        }
      },
      "CreateTerminalAddonRequest": {
        "required": [
          "processor"
        ],
        "type": "object",
        "properties": {
          "processor": {
            "type": "string"
          }
        }
      },
      "CreateTokenRequest": {
        "required": [
          "userId"
        ],
        "type": "object",
        "properties": {
          "userId": {
            "type": "string",
            "format": "uuid"
          },
          "tokenType": {
            "maxLength": 16,
            "minLength": 0,
            "type": "string"
          },
          "uid": {
            "maxLength": 36,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "alias": {
            "maxLength": 100,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "expiresAt": {
            "format": "date-time"
          }
        }
      },
      "CreateUserRequest": {
        "required": [
          "email",
          "firstName",
          "lastName"
        ],
        "type": "object",
        "properties": {
          "email": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string"
          },
          "firstName": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string"
          },
          "lastName": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string"
          },
          "phoneNumber": {
            "maxLength": 20,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "address": {
            "maxLength": 200,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "city": {
            "maxLength": 100,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "state": {
            "maxLength": 50,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "postalCode": {
            "maxLength": 20,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "country": {
            "maxLength": 50,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "CreateWebhookRequest": {
        "required": [
          "url",
          "events",
          "description"
        ],
        "type": "object",
        "properties": {
          "url": {
            "type": "string"
          },
          "events": {
            "type": "string"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "CredentialRoleDto": {
        "type": "object",
        "properties": {
          "role": {
            "type": [
              "null",
              "string"
            ]
          },
          "businessDetails": {
            "$ref": "#/components/schemas/BusinessDetailsDto"
          },
          "partyId": {
            "type": [
              "null",
              "string"
            ]
          },
          "countryCode": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "CredentialsDto": {
        "type": "object",
        "properties": {
          "token": {
            "type": [
              "null",
              "string"
            ]
          },
          "url": {
            "type": [
              "null",
              "string"
            ]
          },
          "roles": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/CredentialRoleDto"
            }
          }
        }
      },
      "CustomerCertificateDto": {
        "type": "object",
        "properties": {
          "hashAlgorithm": {
            "type": "string"
          },
          "issuerNameHash": {
            "type": "string"
          },
          "issuerKeyHash": {
            "type": "string"
          },
          "serialNumber": {
            "type": "string"
          }
        }
      },
      "CustomerInformationCertificateDto": {
        "type": "object",
        "properties": {
          "hashAlgorithm": {
            "type": "string"
          },
          "issuerNameHash": {
            "type": "string"
          },
          "issuerKeyHash": {
            "type": "string"
          },
          "serialNumber": {
            "type": "string"
          }
        }
      },
      "CustomerInformationRequest": {
        "type": "object",
        "properties": {
          "report": {
            "type": "boolean"
          },
          "clear": {
            "type": "boolean"
          },
          "customerIdentifier": {
            "type": [
              "null",
              "string"
            ]
          },
          "customerCertificate": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CustomerInformationCertificateDto"
              }
            ]
          }
        }
      },
      "DeleteCertificateRequest": {
        "required": [
          "hashAlgorithm",
          "issuerNameHash",
          "issuerKeyHash",
          "serialNumber"
        ],
        "type": "object",
        "properties": {
          "hashAlgorithm": {
            "type": "string"
          },
          "issuerNameHash": {
            "type": "string"
          },
          "issuerKeyHash": {
            "type": "string"
          },
          "serialNumber": {
            "type": "string"
          }
        }
      },
      "DisplayTextDto": {
        "type": "object",
        "properties": {
          "language": {
            "type": [
              "null",
              "string"
            ]
          },
          "text": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "DriverForgotPasswordRequest": {
        "required": [
          "email"
        ],
        "type": "object",
        "properties": {
          "email": {
            "type": "string"
          }
        }
      },
      "DriverLoginRequest": {
        "required": [
          "email",
          "password"
        ],
        "type": "object",
        "properties": {
          "email": {
            "type": "string"
          },
          "password": {
            "type": "string"
          }
        }
      },
      "DriverRefreshRequest": {
        "required": [
          "refreshToken"
        ],
        "type": "object",
        "properties": {
          "refreshToken": {
            "type": "string"
          }
        }
      },
      "DriverRegisterRequest": {
        "required": [
          "email",
          "password",
          "firstName",
          "lastName"
        ],
        "type": "object",
        "properties": {
          "email": {
            "type": "string"
          },
          "password": {
            "type": "string"
          },
          "firstName": {
            "type": "string"
          },
          "lastName": {
            "type": "string"
          },
          "phone": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "DriverResetPasswordRequest": {
        "required": [
          "token",
          "newPassword"
        ],
        "type": "object",
        "properties": {
          "token": {
            "type": "string"
          },
          "newPassword": {
            "type": "string"
          }
        }
      },
      "EmspAnalyticsCategoryPoint": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Category name (e.g. a location name).",
            "example": "Isla Verde Mall"
          },
          "value": {
            "type": "number",
            "description": "Aggregated value for this category, in the response currency.",
            "format": "double",
            "example": 842.75
          },
          "percentage": {
            "type": "number",
            "description": "This category's share of the total, as a percentage (0–100).",
            "format": "double",
            "example": 31.4
          }
        }
      },
      "EmspAnalyticsEnergyAnalytics": {
        "type": "object",
        "properties": {
          "totalEnergyKwh": {
            "type": "number",
            "description": "Total energy delivered in the window, in kWh (rounded to 2 dp).",
            "format": "double",
            "example": 34328.1
          },
          "averagePerSessionKwh": {
            "type": "number",
            "description": "Average energy delivered per session, in kWh.",
            "format": "double",
            "example": 18.64
          },
          "peakDayKwh": {
            "type": "number",
            "description": "Energy delivered on the single highest day, in kWh.",
            "format": "double",
            "example": 1640.2
          },
          "peakDayDate": {
            "description": "UTC date of the highest-energy day, or null when there are no sessions.",
            "format": "date-time",
            "example": "2026-06-07T00:00:00Z"
          },
          "growthPercentage": {
            "type": "number",
            "description": "Energy growth vs the previous equal-length window, as a percentage.",
            "format": "double",
            "example": 7.2
          },
          "period": {
            "type": "string",
            "description": "Time-series bucketing requested (day, week, or month).",
            "example": "day"
          },
          "fromDate": {
            "description": "UTC start of the analytics window.",
            "format": "date-time",
            "example": "2026-05-20T00:00:00Z"
          },
          "toDate": {
            "description": "UTC end of the analytics window.",
            "format": "date-time",
            "example": "2026-06-19T00:00:00Z"
          },
          "timeline": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EmspAnalyticsTimeSeriesPoint"
            },
            "description": "Energy delivered bucketed over the window."
          }
        }
      },
      "EmspAnalyticsEnergyResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/EmspAnalyticsEnergyAnalytics"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "EmspAnalyticsErrorResponse": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "description": "Stable machine-readable error slug (e.g. forbidden, bad_request, date_range_too_large).",
            "example": "date_range_too_large"
          },
          "message": {
            "type": "string",
            "description": "Human-readable explanation of the error.",
            "example": "The requested date range exceeds the maximum of 366 days."
          },
          "code": {
            "type": [
              "null",
              "string"
            ],
            "description": "Stable machine-readable error code an agent/MCP tool branches on.",
            "example": "date_range_too_large"
          },
          "timestamp": {
            "description": "UTC time the error was generated. Present on permission/validation errors; absent on the date-range guard.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          },
          "details": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "description": "Optional field-level validation details, keyed by field name."
          }
        }
      },
      "EmspAnalyticsReportExport": {
        "type": "object",
        "properties": {
          "reportType": {
            "type": "string",
            "description": "The report type that was generated (daily-sales, by-location, by-user, sessions-summary).",
            "example": "daily-sales"
          },
          "generatedAt": {
            "description": "UTC time the report was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          },
          "fromDate": {
            "description": "UTC start of the report window.",
            "format": "date-time",
            "example": "2026-05-20T00:00:00Z"
          },
          "toDate": {
            "description": "UTC end of the report window.",
            "format": "date-time",
            "example": "2026-06-19T00:00:00Z"
          },
          "format": {
            "type": "string",
            "description": "Export format requested (json or csv).",
            "example": "json"
          },
          "recordCount": {
            "type": "integer",
            "description": "Number of rows in the report.",
            "format": "int32",
            "example": 30
          },
          "data": {
            "description": "The report rows — an array whose row shape depends on reportType (daily-sales, by-location, by-user, or sessions-summary)."
          }
        }
      },
      "EmspAnalyticsReportExportResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/EmspAnalyticsReportExport"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "EmspAnalyticsRevenueAnalytics": {
        "type": "object",
        "properties": {
          "totalRevenue": {
            "type": "number",
            "description": "Total revenue in the window, in the response currency (rounded to 2 dp).",
            "format": "double",
            "example": 26840.5
          },
          "averagePerSession": {
            "type": "number",
            "description": "Average revenue per paid session, in the response currency.",
            "format": "double",
            "example": 14.57
          },
          "currency": {
            "type": "string",
            "description": "ISO 4217 currency code the revenue is expressed in.",
            "example": "USD"
          },
          "growthPercentage": {
            "type": "number",
            "description": "Revenue growth vs the previous equal-length window, as a percentage.",
            "format": "double",
            "example": 9.8
          },
          "period": {
            "type": "string",
            "description": "Time-series bucketing requested (day, week, or month).",
            "example": "day"
          },
          "fromDate": {
            "description": "UTC start of the analytics window.",
            "format": "date-time",
            "example": "2026-05-20T00:00:00Z"
          },
          "toDate": {
            "description": "UTC end of the analytics window.",
            "format": "date-time",
            "example": "2026-06-19T00:00:00Z"
          },
          "timeline": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EmspAnalyticsTimeSeriesPoint"
            },
            "description": "Revenue bucketed over the window."
          },
          "revenueByLocation": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EmspAnalyticsCategoryPoint"
            },
            "description": "Top 10 locations by revenue in the window."
          }
        }
      },
      "EmspAnalyticsRevenueResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/EmspAnalyticsRevenueAnalytics"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "EmspAnalyticsSessionAnalytics": {
        "type": "object",
        "properties": {
          "totalSessions": {
            "type": "integer",
            "description": "Total sessions started in the window.",
            "format": "int32",
            "example": 1842
          },
          "completedSessions": {
            "type": "integer",
            "description": "Sessions that completed successfully.",
            "format": "int32",
            "example": 1790
          },
          "failedSessions": {
            "type": "integer",
            "description": "Sessions that failed or errored.",
            "format": "int32",
            "example": 52
          },
          "averageSessionDurationMinutes": {
            "type": "number",
            "description": "Average session duration, in minutes (rounded to 2 dp).",
            "format": "double",
            "example": 47.32
          },
          "averageEnergyPerSessionKwh": {
            "type": "number",
            "description": "Average energy delivered per session, in kWh (rounded to 2 dp).",
            "format": "double",
            "example": 18.64
          },
          "growthPercentage": {
            "type": "number",
            "description": "Session-count growth vs the previous equal-length window, as a percentage.",
            "format": "double",
            "example": 12.5
          },
          "period": {
            "type": "string",
            "description": "Time-series bucketing requested (day, week, or month).",
            "example": "day"
          },
          "fromDate": {
            "description": "UTC start of the analytics window.",
            "format": "date-time",
            "example": "2026-05-20T00:00:00Z"
          },
          "toDate": {
            "description": "UTC end of the analytics window.",
            "format": "date-time",
            "example": "2026-06-19T00:00:00Z"
          },
          "timeline": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EmspAnalyticsTimeSeriesPoint"
            },
            "description": "Session counts bucketed over the window."
          }
        }
      },
      "EmspAnalyticsSessionResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/EmspAnalyticsSessionAnalytics"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "EmspAnalyticsTimeSeriesPoint": {
        "type": "object",
        "properties": {
          "date": {
            "description": "UTC bucket timestamp for this point (day/week/month start, per the period).",
            "format": "date-time",
            "example": "2026-06-18T00:00:00Z"
          },
          "value": {
            "type": "number",
            "description": "Aggregated value for this bucket (sessions count, revenue, or kWh depending on the series).",
            "format": "double",
            "example": 124.5
          },
          "label": {
            "type": [
              "null",
              "string"
            ],
            "description": "Optional human label for the bucket, or null.",
            "example": "Jun 18"
          }
        }
      },
      "EmspAuthErrorResponse": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "description": "Stable machine-readable error slug (e.g. not_found, forbidden, conflict).",
            "example": "not_found"
          },
          "message": {
            "type": "string",
            "description": "Human-readable explanation of the error.",
            "example": "Token with identifier '7c1e2a44-9b3d-4e6f-8a01-2b3c4d5e6f70' was not found."
          },
          "code": {
            "type": [
              "null",
              "string"
            ],
            "description": "Stable machine-readable error code an agent can branch on (defaults to the error slug).",
            "example": "RESOURCE_NOT_FOUND"
          },
          "timestamp": {
            "description": "UTC time the error was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          },
          "details": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "description": "Optional field-level validation details, keyed by field name."
          }
        }
      },
      "EmspAuthPagination": {
        "type": "object",
        "properties": {
          "totalCount": {
            "type": "integer",
            "description": "Total number of tokens across all pages.",
            "format": "int32",
            "example": 42
          },
          "page": {
            "type": "integer",
            "description": "1-based page index of this result set.",
            "format": "int32",
            "example": 1
          },
          "pageSize": {
            "type": "integer",
            "description": "Items per page (1–100; defaults to 20).",
            "format": "int32",
            "example": 20
          },
          "totalPages": {
            "type": "integer",
            "description": "Total number of pages at the current pageSize.",
            "format": "int32",
            "example": 3
          },
          "hasNextPage": {
            "type": "boolean",
            "description": "True when a page after this one exists.",
            "example": true
          },
          "hasPreviousPage": {
            "type": "boolean",
            "description": "True when a page before this one exists.",
            "example": false
          }
        }
      },
      "EmspAuthTokenActionModel": {
        "type": "object",
        "properties": {
          "tokenId": {
            "type": "string",
            "description": "UUID of the token the action was applied to.",
            "format": "uuid",
            "example": "7c1e2a44-9b3d-4e6f-8a01-2b3c4d5e6f70"
          },
          "action": {
            "type": "string",
            "description": "The action that was performed (e.g. \"invalidate\").",
            "example": "invalidate"
          },
          "success": {
            "type": "boolean",
            "description": "True when the action completed successfully.",
            "example": true
          },
          "message": {
            "type": [
              "null",
              "string"
            ],
            "description": "Human-readable description of the outcome.",
            "example": "Token has been invalidated successfully"
          }
        }
      },
      "EmspAuthTokenActionResponse": {
        "type": "object",
        "properties": {
          "data": {
            "description": "The action result.",
            "$ref": "#/components/schemas/EmspAuthTokenActionModel"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "EmspAuthTokenListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EmspAuthTokenModel"
            },
            "description": "The page of tokens."
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          },
          "pagination": {
            "description": "Page metadata for the result set.",
            "$ref": "#/components/schemas/EmspAuthPagination"
          }
        }
      },
      "EmspAuthTokenModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Stable token UUID. Use it in GET /auth/tokens/{id} and DELETE /auth/tokens/{id}.",
            "format": "uuid",
            "example": "7c1e2a44-9b3d-4e6f-8a01-2b3c4d5e6f70"
          },
          "uid": {
            "type": "string",
            "description": "Token UID — the credential a charger reads (RFID card serial or app-issued identifier). Auto-generated (12-char alphanumeric) when not supplied on create.",
            "example": "A1B2C3D4E5F6"
          },
          "contractId": {
            "type": "string",
            "description": "OCPI-style eMA contract id (COUNTRY-PARTY-UNIQUE), generated per token from the owning network.",
            "example": "US-PHV-A1B2C3D4"
          },
          "tokenType": {
            "type": "string",
            "description": "Token category: RFID, APP_USER, AD_HOC_USER, or OTHER.",
            "example": "APP_USER"
          },
          "alias": {
            "type": [
              "null",
              "string"
            ],
            "description": "Optional human-friendly label for the token.",
            "example": "Maya's app token"
          },
          "valid": {
            "type": "boolean",
            "description": "Whether the token may currently be used to authorize charging. Set to false by DELETE /auth/tokens/{id}.",
            "example": true
          },
          "userId": {
            "type": "string",
            "description": "UUID of the driver (user) this token belongs to.",
            "format": "uuid",
            "example": "1ae38f39-2c4b-4d5e-9f10-3a4b5c6d7e8f"
          },
          "createdAt": {
            "description": "UTC timestamp when the token was created.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          },
          "expiresAt": {
            "description": "Optional UTC expiry. Null means the token does not expire.",
            "format": "date-time",
            "example": "2027-06-19T00:00:00Z"
          },
          "lastUsedAt": {
            "description": "UTC timestamp the token was last used to authorize a session, or null if never used.",
            "format": "date-time",
            "example": "2026-06-18T14:05:33Z"
          }
        }
      },
      "EmspAuthTokenResponse": {
        "type": "object",
        "properties": {
          "data": {
            "description": "The token.",
            "$ref": "#/components/schemas/EmspAuthTokenModel"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "EmspChargersChargerDetail": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Stable charger UUID.",
            "format": "uuid",
            "example": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b"
          },
          "uid": {
            "type": "string",
            "description": "OCPP charge-point identity (chargePointId).",
            "example": "CP-IslaVerde-01"
          },
          "evseId": {
            "type": [
              "null",
              "string"
            ],
            "description": "eMI3/OCPI EVSE identifier, if assigned.",
            "example": "PR*PHX*E001234"
          },
          "status": {
            "type": "string",
            "description": "Last OCPP status reported by the station. Cross-check isOnline for liveness.",
            "example": "AVAILABLE"
          },
          "locationId": {
            "type": [
              "null",
              "string"
            ],
            "description": "UUID of the assigned location/site, or null.",
            "format": "uuid",
            "example": "c1a2b3d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d"
          },
          "locationName": {
            "type": [
              "null",
              "string"
            ],
            "description": "Display name of the assigned location, or null.",
            "example": "Isla Verde Mall"
          },
          "isPublic": {
            "type": "boolean",
            "description": "True if the charger is publicly listed/usable.",
            "example": true
          },
          "maxPowerKw": {
            "type": [
              "null",
              "number"
            ],
            "description": "Rated maximum power of the charger, in kW. Falls back to the strongest connector's rating when the charger-level value is unset.",
            "format": "double",
            "example": 150
          },
          "connectorCount": {
            "type": "integer",
            "description": "Number of active (non-deleted) connectors on this charger.",
            "format": "int32",
            "example": 2
          },
          "lastHeartbeat": {
            "description": "UTC timestamp of the last OCPP heartbeat / StatusNotification.",
            "format": "date-time",
            "example": "2026-06-19T18:42:07Z"
          },
          "isOnline": {
            "type": "boolean",
            "description": "True only if a heartbeat arrived within the last 5 minutes.",
            "example": true
          },
          "lastUpdated": {
            "description": "UTC timestamp the charger record was last updated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:07Z"
          },
          "networkId": {
            "type": [
              "null",
              "string"
            ],
            "description": "UUID of the owning network (operator).",
            "format": "uuid",
            "example": "3f9a1c20-6b7d-4e8f-9a0b-1c2d3e4f5a6b"
          },
          "networkName": {
            "type": [
              "null",
              "string"
            ],
            "description": "Display name of the owning network.",
            "example": "Phevnix PR"
          },
          "serialNumber": {
            "type": [
              "null",
              "string"
            ],
            "description": "Manufacturer hardware serial number, if the station reported one.",
            "example": "SN-A1B2C3D4"
          },
          "manufacturer": {
            "type": [
              "null",
              "string"
            ],
            "description": "Charger manufacturer name, if known.",
            "example": "ABB"
          },
          "model": {
            "type": [
              "null",
              "string"
            ],
            "description": "Charger model name, if known.",
            "example": "Terra 184"
          },
          "firmwareVersion": {
            "type": [
              "null",
              "string"
            ],
            "description": "Firmware version last reported via OCPP BootNotification.",
            "example": "1.5.32"
          },
          "ocppVersion": {
            "type": [
              "null",
              "string"
            ],
            "description": "OCPP protocol the station negotiated (e.g. 1.6 or 2.0.1).",
            "example": "1.6"
          },
          "installationDate": {
            "description": "UTC date the charger was installed/commissioned, if recorded.",
            "format": "date-time",
            "example": "2025-09-01T00:00:00Z"
          },
          "floorLevel": {
            "type": [
              "null",
              "string"
            ],
            "description": "Floor/level the charger sits on (e.g. \"P1\"), if recorded.",
            "example": "P1"
          },
          "physicalReference": {
            "type": [
              "null",
              "string"
            ],
            "description": "Free-text physical reference printed at the bay (e.g. a stall number).",
            "example": "Bay 14"
          },
          "coordinates": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "description": "Geographic position of the charger, if it carries its own coordinates.",
                "$ref": "#/components/schemas/EmspChargersCoordinates"
              }
            ]
          },
          "connectors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EmspChargersConnectorSummary"
            },
            "description": "The charger's connectors, ordered by connector number."
          }
        }
      },
      "EmspChargersChargerInfo": {
        "type": "object",
        "properties": {
          "chargerUuid": {
            "type": "string",
            "description": "Stable charger UUID.",
            "format": "uuid",
            "example": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b"
          },
          "chargerUid": {
            "type": "string",
            "description": "OCPP charge-point identity (chargePointId).",
            "example": "CP-IslaVerde-01"
          },
          "chargerName": {
            "type": [
              "null",
              "string"
            ],
            "description": "Display name for the charger (currently mirrors the Uid).",
            "example": "CP-IslaVerde-01"
          },
          "llmLookupId": {
            "type": [
              "null",
              "string"
            ],
            "description": "Short human code printed on the station (e.g. \"SHD54S\") — a driver references the charger by this, including by voice.",
            "example": "SHD54S"
          },
          "status": {
            "type": "string",
            "description": "Last OCPP status reported by the station.",
            "example": "AVAILABLE"
          },
          "isOnline": {
            "type": "boolean",
            "description": "True only if a heartbeat arrived within the last 5 minutes.",
            "example": true
          },
          "locationUuid": {
            "type": "string",
            "description": "UUID of the location/site this charger sits at.",
            "format": "uuid",
            "example": "c1a2b3d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d"
          },
          "locationName": {
            "type": "string",
            "description": "Display name of the location/site.",
            "example": "Isla Verde Mall"
          },
          "address": {
            "type": [
              "null",
              "string"
            ],
            "description": "Street address of the location.",
            "example": "8169 Calle Marginal"
          },
          "city": {
            "type": [
              "null",
              "string"
            ],
            "description": "City of the location.",
            "example": "Carolina"
          },
          "latitude": {
            "type": [
              "null",
              "number"
            ],
            "description": "Latitude of the location (or charger fallback), in decimal degrees.",
            "format": "double",
            "example": 18.4319
          },
          "longitude": {
            "type": [
              "null",
              "number"
            ],
            "description": "Longitude of the location (or charger fallback), in decimal degrees.",
            "format": "double",
            "example": -66.0617
          },
          "networkUuid": {
            "type": "string",
            "description": "UUID of the owning network (operator).",
            "format": "uuid",
            "example": "3f9a1c20-6b7d-4e8f-9a0b-1c2d3e4f5a6b"
          },
          "networkName": {
            "type": "string",
            "description": "Display name of the owning network.",
            "example": "Phevnix PR"
          },
          "networkLogoUrl": {
            "type": [
              "null",
              "string"
            ],
            "description": "URL of the network's logo, for white-label theming. Null if unset.",
            "example": "https://cdn.phevnix.com/networks/phevnix-pr/logo.svg"
          },
          "networkPrimaryColor": {
            "type": [
              "null",
              "string"
            ],
            "description": "Network primary brand color (hex, e.g. \"#0EA5E9\") for white-label UI. Null if unset.",
            "example": "#0EA5E9"
          },
          "networkSecondaryColor": {
            "type": [
              "null",
              "string"
            ],
            "description": "Network secondary brand color (hex). Null if unset.",
            "example": "#0F172A"
          },
          "currency": {
            "type": "string",
            "description": "ISO 4217 currency code the network prices in.",
            "example": "USD"
          },
          "connectors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EmspChargersConnectorPricing"
            },
            "description": "The charger's connectors with their applicable pricing."
          }
        }
      },
      "EmspChargersChargerSummary": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Stable charger UUID. Use it in GET /chargers/{id} and wherever a chargerId is required.",
            "format": "uuid",
            "example": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b"
          },
          "uid": {
            "type": "string",
            "description": "OCPP charge-point identity — the chargePointId the physical station connects to the CSMS with.",
            "example": "CP-IslaVerde-01"
          },
          "evseId": {
            "type": [
              "null",
              "string"
            ],
            "description": "eMI3/OCPI EVSE identifier for this charger, if assigned (e.g. for roaming).",
            "example": "PR*PHX*E001234"
          },
          "status": {
            "type": "string",
            "description": "Last OCPP status reported by the station (AVAILABLE, CHARGING, FAULTED, UNAVAILABLE, …). Can read stale after a station drops offline — cross-check isOnline for liveness.",
            "example": "AVAILABLE"
          },
          "locationId": {
            "type": [
              "null",
              "string"
            ],
            "description": "UUID of the location/site this charger is assigned to, or null if unassigned.",
            "format": "uuid",
            "example": "c1a2b3d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d"
          },
          "locationName": {
            "type": [
              "null",
              "string"
            ],
            "description": "Display name of the assigned location, or null.",
            "example": "Isla Verde Mall"
          },
          "isPublic": {
            "type": "boolean",
            "description": "True if the charger is publicly listed/usable; false for private or restricted units.",
            "example": true
          },
          "maxPowerKw": {
            "type": [
              "null",
              "number"
            ],
            "description": "Rated maximum power of the charger, in kW.",
            "format": "double",
            "example": 150
          },
          "connectorCount": {
            "type": "integer",
            "description": "Number of active (non-deleted) connectors on this charger.",
            "format": "int32",
            "example": 2
          },
          "lastHeartbeat": {
            "description": "UTC timestamp of the last OCPP heartbeat / StatusNotification from the station.",
            "format": "date-time",
            "example": "2026-06-19T18:42:07Z"
          },
          "isOnline": {
            "type": "boolean",
            "description": "True only if a heartbeat arrived within the last 5 minutes. Treat !isOnline as unavailable regardless of the status field.",
            "example": true
          },
          "lastUpdated": {
            "description": "UTC timestamp the charger record was last updated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:07Z"
          },
          "networkId": {
            "type": [
              "null",
              "string"
            ],
            "description": "UUID of the network (operator) that owns this charger. Important for the hosted/aggregator eMSP, where a single key spans many networks.",
            "format": "uuid",
            "example": "3f9a1c20-6b7d-4e8f-9a0b-1c2d3e4f5a6b"
          },
          "networkName": {
            "type": [
              "null",
              "string"
            ],
            "description": "Display name of the owning network.",
            "example": "Phevnix PR"
          }
        }
      },
      "EmspChargersConnectorPricing": {
        "type": "object",
        "properties": {
          "connectorUuid": {
            "type": "string",
            "description": "Stable connector UUID.",
            "format": "uuid",
            "example": "9f1c2b30-4d5e-6a7b-8c9d-0e1f2a3b4c5d"
          },
          "connectorIdentifier": {
            "type": "string",
            "description": "Stable connector identifier string.",
            "example": "CP-IslaVerde-01-1"
          },
          "connectorNumber": {
            "type": "integer",
            "description": "Connector number on the charger (1-based).",
            "format": "int32",
            "example": 1
          },
          "standard": {
            "type": "string",
            "description": "Plug standard (e.g. IEC_62196_T2).",
            "example": "IEC_62196_T2"
          },
          "format": {
            "type": "string",
            "description": "Connector format: CABLE or SOCKET.",
            "example": "SOCKET"
          },
          "powerType": {
            "type": "string",
            "description": "Power delivery type (AC_1_PHASE, AC_3_PHASE, DC).",
            "example": "AC_3_PHASE"
          },
          "maxPowerKw": {
            "type": [
              "null",
              "number"
            ],
            "description": "Maximum power this connector can deliver, in kW.",
            "format": "double",
            "example": 22
          },
          "status": {
            "type": "string",
            "description": "Live connector status, or UNKNOWN if never reported.",
            "example": "AVAILABLE"
          },
          "tariffId": {
            "type": [
              "null",
              "string"
            ],
            "description": "OCPI id of the tariff applied to this connector (via the connector→charger→location→network hierarchy), or null if no tariff applies.",
            "example": "TARIFF-STD-AC"
          },
          "tariffName": {
            "type": [
              "null",
              "string"
            ],
            "description": "Display name of the applied tariff.",
            "example": "Standard AC"
          },
          "energyRate": {
            "type": [
              "null",
              "number"
            ],
            "description": "Per-kWh energy rate, in the network currency.",
            "format": "double",
            "example": 0.35
          },
          "timeRate": {
            "type": [
              "null",
              "number"
            ],
            "description": "Per-minute time rate, in the network currency.",
            "format": "double",
            "example": 0
          },
          "sessionFee": {
            "type": [
              "null",
              "number"
            ],
            "description": "Flat per-session fee, in the network currency.",
            "format": "double",
            "example": 0.5
          },
          "idleRate": {
            "type": [
              "null",
              "number"
            ],
            "description": "Per-minute idle fee charged after the grace period, in the network currency.",
            "format": "double",
            "example": 0.4
          },
          "idleFeeEnabled": {
            "type": "boolean",
            "description": "True if idle fees apply for this connector's tariff.",
            "example": true
          },
          "idleGracePeriodMinutes": {
            "type": [
              "null",
              "integer"
            ],
            "description": "Minutes of idle time allowed before idle fees begin.",
            "format": "int32",
            "example": 10
          }
        }
      },
      "EmspChargersConnectorSummary": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Stable connector UUID. Use it in GET /connectors/{id}/status.",
            "format": "uuid",
            "example": "9f1c2b30-4d5e-6a7b-8c9d-0e1f2a3b4c5d"
          },
          "connectorNumber": {
            "type": "integer",
            "description": "Connector number on the charger (1-based).",
            "format": "int32",
            "example": 1
          },
          "connectorIdentifier": {
            "type": "string",
            "description": "Stable connector identifier string (e.g. the OCPI connector id).",
            "example": "CP-IslaVerde-01-1"
          },
          "status": {
            "type": "string",
            "description": "Live connector status (AVAILABLE, CHARGING, PREPARING, FINISHING, FAULTED, …) or UNKNOWN if never reported. Reads CHARGING when an active session occupies an otherwise-AVAILABLE connector.",
            "example": "AVAILABLE"
          },
          "standard": {
            "type": "string",
            "description": "Plug standard (e.g. IEC_62196_T2, CHADEMO, IEC_62196_T1_COMBO).",
            "example": "IEC_62196_T2"
          },
          "format": {
            "type": "string",
            "description": "Connector format: CABLE (tethered) or SOCKET (untethered).",
            "example": "SOCKET"
          },
          "powerType": {
            "type": "string",
            "description": "Power delivery type (AC_1_PHASE, AC_3_PHASE, DC).",
            "example": "AC_3_PHASE"
          },
          "maxVoltage": {
            "type": "integer",
            "description": "Maximum voltage the connector supports, in volts.",
            "format": "int32",
            "example": 400
          },
          "maxAmperage": {
            "type": "integer",
            "description": "Maximum current the connector supports, in amperes.",
            "format": "int32",
            "example": 32
          },
          "maxElectricPowerWatts": {
            "type": [
              "null",
              "integer"
            ],
            "description": "Maximum power this connector can deliver, in watts.",
            "format": "int32",
            "example": 22000
          },
          "lastUpdated": {
            "description": "UTC timestamp the connector record was last updated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:07Z"
          }
        }
      },
      "EmspChargersCoordinates": {
        "type": "object",
        "properties": {
          "latitude": {
            "type": "number",
            "description": "Latitude in decimal degrees (WGS84).",
            "format": "double",
            "example": 18.4319
          },
          "longitude": {
            "type": "number",
            "description": "Longitude in decimal degrees (WGS84).",
            "format": "double",
            "example": -66.0617
          }
        }
      },
      "EmspChargersDetailResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/EmspChargersChargerDetail"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "EmspChargersErrorResponse": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "description": "Stable machine-readable error slug (e.g. not_found, forbidden, bad_request).",
            "example": "not_found"
          },
          "message": {
            "type": "string",
            "description": "Human-readable explanation of the error.",
            "example": "Charger with identifier '4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b' was not found."
          },
          "code": {
            "type": [
              "null",
              "string"
            ],
            "description": "Stable machine-readable error code an agent/MCP tool branches on (e.g. RESOURCE_NOT_FOUND).",
            "example": "RESOURCE_NOT_FOUND"
          },
          "timestamp": {
            "description": "UTC time the error was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          },
          "details": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "description": "Optional field-level validation details, keyed by field name."
          }
        }
      },
      "EmspChargersInfoResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/EmspChargersChargerInfo"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "EmspChargersListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EmspChargersChargerSummary"
            },
            "description": "The page of chargers."
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          },
          "pagination": {
            "$ref": "#/components/schemas/EmspChargersPagination"
          }
        }
      },
      "EmspChargersPagination": {
        "type": "object",
        "properties": {
          "totalCount": {
            "type": "integer",
            "description": "Total number of items across all pages.",
            "format": "int32",
            "example": 137
          },
          "page": {
            "type": "integer",
            "description": "1-based page index of this result set.",
            "format": "int32",
            "example": 1
          },
          "pageSize": {
            "type": "integer",
            "description": "Items requested per page (1–100; defaults to 20).",
            "format": "int32",
            "example": 20
          },
          "totalPages": {
            "type": "integer",
            "description": "Total number of pages at the current pageSize.",
            "format": "int32",
            "example": 7
          },
          "hasNextPage": {
            "type": "boolean",
            "description": "True if there is a page after this one.",
            "example": true
          },
          "hasPreviousPage": {
            "type": "boolean",
            "description": "True if there is a page before this one.",
            "example": false
          }
        }
      },
      "EmspChargersRebootResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/EmspChargersRebootResult"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "EmspChargersRebootResult": {
        "type": "object",
        "properties": {
          "chargerId": {
            "type": "string",
            "description": "UUID of the charger the reset command was sent to.",
            "format": "uuid",
            "example": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b"
          },
          "status": {
            "type": "string",
            "description": "Command acknowledgement status, e.g. \"Accepted\".",
            "example": "Accepted"
          },
          "message": {
            "type": "string",
            "description": "Human-readable confirmation of the command result.",
            "example": "Soft reset command sent successfully"
          }
        }
      },
      "EmspChargingErrorResponse": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "description": "Stable machine-readable error code (e.g. forbidden, bad_request, not_found, payment_method_required, payment_failed).",
            "example": "payment_method_required"
          },
          "message": {
            "type": "string",
            "description": "Human-readable explanation of the error.",
            "example": "Add a payment method before starting a session on this network."
          },
          "code": {
            "type": [
              "null",
              "string"
            ],
            "description": "Stable machine-readable error code an agent can branch on (defaults to the `error` slug).",
            "example": "payment_method_required"
          },
          "timestamp": {
            "description": "UTC time the error was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "EmspChargingStartResponse": {
        "type": "object",
        "properties": {
          "data": {
            "description": "The start-command result. While the charger has not yet confirmed, sessionId is null and status is PENDING — resolve the real session id by polling the sessions list with the returned correlationId/chargerId.",
            "$ref": "#/components/schemas/StartSessionResponse"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "EmspChargingStopResponse": {
        "type": "object",
        "properties": {
          "data": {
            "description": "The session as it stands the instant the stop command was accepted (status STOPPING). Final energy/cost arrive asynchronously from the charger's StopTransaction — re-fetch the session for the settled values.",
            "$ref": "#/components/schemas/PublicApiSessionDetailDto"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "EmspConnectorsConnectorStatus": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Stable connector UUID.",
            "format": "uuid",
            "example": "9f1c2b30-4d5e-6a7b-8c9d-0e1f2a3b4c5d"
          },
          "connectorNumber": {
            "type": "integer",
            "description": "Connector number on the charger (1-based).",
            "format": "int32",
            "example": 1
          },
          "connectorIdentifier": {
            "type": "string",
            "description": "Stable connector identifier string (e.g. the OCPI connector id).",
            "example": "CP-IslaVerde-01-1"
          },
          "status": {
            "type": "string",
            "description": "Live connector status (AVAILABLE, CHARGING, PREPARING, FINISHING, FAULTED, …) or UNKNOWN if never reported.",
            "example": "AVAILABLE"
          },
          "standard": {
            "type": "string",
            "description": "Plug standard (e.g. IEC_62196_T2, CHADEMO, IEC_62196_T1_COMBO).",
            "example": "IEC_62196_T2"
          },
          "format": {
            "type": "string",
            "description": "Connector format: CABLE (tethered) or SOCKET (untethered).",
            "example": "SOCKET"
          },
          "powerType": {
            "type": "string",
            "description": "Power delivery type (AC_1_PHASE, AC_3_PHASE, DC).",
            "example": "AC_3_PHASE"
          },
          "maxVoltage": {
            "type": "integer",
            "description": "Maximum voltage the connector supports, in volts.",
            "format": "int32",
            "example": 400
          },
          "maxAmperage": {
            "type": "integer",
            "description": "Maximum current the connector supports, in amperes.",
            "format": "int32",
            "example": 32
          },
          "maxElectricPowerWatts": {
            "type": [
              "null",
              "integer"
            ],
            "description": "Maximum power this connector can deliver, in watts.",
            "format": "int32",
            "example": 22000
          },
          "lastUpdated": {
            "description": "UTC timestamp the connector record was last updated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:07Z"
          },
          "chargerId": {
            "type": "string",
            "description": "UUID of the charger this connector belongs to.",
            "format": "uuid",
            "example": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b"
          },
          "chargerUid": {
            "type": "string",
            "description": "OCPP charge-point identity of the owning charger (chargePointId).",
            "example": "CP-IslaVerde-01"
          },
          "locationId": {
            "type": [
              "null",
              "string"
            ],
            "description": "UUID of the location/site the charger is assigned to, or null.",
            "format": "uuid",
            "example": "c1a2b3d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d"
          },
          "locationName": {
            "type": [
              "null",
              "string"
            ],
            "description": "Display name of the assigned location, or null.",
            "example": "Isla Verde Mall"
          },
          "lastStatusUpdate": {
            "description": "UTC timestamp of the last OCPP StatusNotification for this connector.",
            "format": "date-time",
            "example": "2026-06-19T18:41:55Z"
          },
          "hasRfidReader": {
            "type": "boolean",
            "description": "True if the connector has an RFID reader.",
            "example": true
          },
          "hasDisplay": {
            "type": "boolean",
            "description": "True if the connector has a display.",
            "example": false
          }
        }
      },
      "EmspConnectorsErrorResponse": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "description": "Stable machine-readable error slug (e.g. not_found, forbidden).",
            "example": "not_found"
          },
          "message": {
            "type": "string",
            "description": "Human-readable explanation of the error.",
            "example": "Connector with identifier '9f1c2b30-4d5e-6a7b-8c9d-0e1f2a3b4c5d' was not found."
          },
          "code": {
            "type": [
              "null",
              "string"
            ],
            "description": "Stable machine-readable error code an agent/MCP tool branches on (e.g. RESOURCE_NOT_FOUND).",
            "example": "RESOURCE_NOT_FOUND"
          },
          "timestamp": {
            "description": "UTC time the error was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          },
          "details": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "description": "Optional field-level validation details, keyed by field name."
          }
        }
      },
      "EmspConnectorsStatusResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/EmspConnectorsConnectorStatus"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "EmspDriverAuthDriverSummary": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Stable driver (user) UUID — the sub the token is bound to.",
            "format": "uuid",
            "example": "1ae38f39-2c4b-4d5e-9f10-3a4b5c6d7e8f"
          },
          "email": {
            "type": "string",
            "description": "Driver's email address.",
            "example": "maya@example.com"
          },
          "firstName": {
            "type": "string",
            "description": "Driver's first name.",
            "example": "Maya"
          },
          "lastName": {
            "type": "string",
            "description": "Driver's last name.",
            "example": "Rivera"
          },
          "tokenUid": {
            "type": [
              "null",
              "string"
            ],
            "description": "UID of the charging token auto-provisioned for the driver, or null if none was issued.",
            "example": "A1B2C3D4E5F6"
          }
        }
      },
      "EmspDriverAuthErrorResponse": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "description": "Stable machine-readable error slug (e.g. unauthorized, rate_limited, bad_request, not_found).",
            "example": "unauthorized"
          },
          "message": {
            "type": "string",
            "description": "Human-readable explanation of the error.",
            "example": "Invalid email or password."
          },
          "code": {
            "type": [
              "null",
              "string"
            ],
            "description": "Stable machine-readable error code an agent can branch on (defaults to the error slug).",
            "example": "unauthorized"
          },
          "timestamp": {
            "description": "UTC time the error was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          },
          "details": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "description": "Optional field-level validation details, keyed by field name."
          }
        }
      },
      "EmspDriverAuthMeModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Stable driver (user) UUID.",
            "format": "uuid",
            "example": "1ae38f39-2c4b-4d5e-9f10-3a4b5c6d7e8f"
          },
          "Email": {
            "type": "string",
            "description": "Driver's email address.",
            "example": "maya@example.com"
          },
          "FirstName": {
            "type": "string",
            "description": "Driver's first name.",
            "example": "Maya"
          },
          "LastName": {
            "type": "string",
            "description": "Driver's last name.",
            "example": "Rivera"
          },
          "PhoneNumber": {
            "type": "string",
            "description": "Driver's phone number.",
            "example": "+17875551234"
          },
          "Address": {
            "type": [
              "null",
              "string"
            ],
            "description": "Street address, or null.",
            "example": "123 Calle Sol"
          },
          "City": {
            "type": [
              "null",
              "string"
            ],
            "description": "City, or null.",
            "example": "San Juan"
          },
          "State": {
            "type": [
              "null",
              "string"
            ],
            "description": "State/region, or null.",
            "example": "PR"
          },
          "PostalCode": {
            "type": [
              "null",
              "string"
            ],
            "description": "Postal code, or null.",
            "example": "00901"
          },
          "Country": {
            "type": [
              "null",
              "string"
            ],
            "description": "Country, or null.",
            "example": "US"
          },
          "CreatedAt": {
            "description": "UTC timestamp when the driver account was created.",
            "format": "date-time",
            "example": "2026-01-15T09:30:00Z"
          },
          "tokens": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EmspDriverAuthMeToken"
            },
            "description": "The driver's currently valid charging tokens."
          }
        }
      },
      "EmspDriverAuthMeResponse": {
        "type": "object",
        "properties": {
          "data": {
            "description": "The authenticated driver's profile.",
            "$ref": "#/components/schemas/EmspDriverAuthMeModel"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "EmspDriverAuthMessageModel": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string",
            "description": "Human-readable outcome message. For forgot-password it is deliberately generic to prevent email enumeration.",
            "example": "If the email exists, a password reset link has been sent."
          }
        }
      },
      "EmspDriverAuthMessageResponse": {
        "type": "object",
        "properties": {
          "data": {
            "description": "The outcome message.",
            "$ref": "#/components/schemas/EmspDriverAuthMessageModel"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "EmspDriverAuthMeToken": {
        "type": "object",
        "properties": {
          "TokenUuid": {
            "type": "string",
            "description": "Stable token UUID.",
            "format": "uuid",
            "example": "7c1e2a44-9b3d-4e6f-8a01-2b3c4d5e6f70"
          },
          "Uid": {
            "type": "string",
            "description": "Token UID — the credential a charger reads.",
            "example": "A1B2C3D4E5F6"
          },
          "TokenType": {
            "type": "string",
            "description": "Token category: RFID, APP_USER, AD_HOC_USER, or OTHER.",
            "example": "APP_USER"
          }
        }
      },
      "EmspDriverAuthRefreshModel": {
        "type": "object",
        "properties": {
          "accessToken": {
            "type": "string",
            "description": "A freshly issued short-lived bearer access token (JWT).",
            "example": "eyJ...<access-token>..."
          },
          "refreshToken": {
            "type": [
              "null",
              "string"
            ],
            "description": "The rotated refresh token, or the same token on a benign within-grace duplicate refresh.",
            "example": "<refresh-token>"
          },
          "expiresIn": {
            "type": "integer",
            "description": "Lifetime of the new access token, in seconds.",
            "format": "int32",
            "example": 3600
          },
          "tokenType": {
            "type": "string",
            "description": "Authorization scheme for the access token — always \"Bearer\".",
            "example": "Bearer"
          }
        }
      },
      "EmspDriverAuthRefreshResponse": {
        "type": "object",
        "properties": {
          "data": {
            "description": "The refreshed tokens.",
            "$ref": "#/components/schemas/EmspDriverAuthRefreshModel"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "EmspDriverAuthResponse": {
        "type": "object",
        "properties": {
          "data": {
            "description": "Tokens and driver summary.",
            "$ref": "#/components/schemas/EmspDriverAuthResultModel"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "EmspDriverAuthResultModel": {
        "type": "object",
        "properties": {
          "accessToken": {
            "type": "string",
            "description": "Short-lived bearer access token (JWT). Send it as `Authorization: Bearer <token>` on driver-scoped requests.",
            "example": "eyJ...<access-token>..."
          },
          "refreshToken": {
            "type": [
              "null",
              "string"
            ],
            "description": "Long-lived refresh token. Exchange it at /auth/driver/refresh for a new access token. Store it securely; treat it as a credential.",
            "example": "<refresh-token>"
          },
          "expiresIn": {
            "type": "integer",
            "description": "Lifetime of the access token, in seconds.",
            "format": "int32",
            "example": 3600
          },
          "tokenType": {
            "type": "string",
            "description": "Authorization scheme for the access token — always \"Bearer\".",
            "example": "Bearer"
          },
          "driver": {
            "description": "The authenticated driver's summary.",
            "$ref": "#/components/schemas/EmspDriverAuthDriverSummary"
          }
        }
      },
      "EmspEventStreamErrorResponse": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "description": "Stable machine-readable error slug (unauthorized, events_not_available).",
            "example": "events_not_available"
          },
          "message": {
            "type": "string",
            "description": "Human-readable explanation of the error.",
            "example": "Real-time event streaming is not available for this key type. Driver-scoped streaming is coming to the eMSP API."
          }
        }
      },
      "EmspFavoritesErrorResponse": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "description": "Stable machine-readable error slug (e.g. driver_required, forbidden, not_found, bad_request).",
            "example": "driver_required"
          },
          "message": {
            "type": "string",
            "description": "Human-readable explanation of the error.",
            "example": "Favorites require driver authentication. Log in via /api/emsp/v1/auth/driver/login."
          },
          "code": {
            "type": [
              "null",
              "string"
            ],
            "description": "Stable machine-readable error code an agent can branch on (defaults to the error slug).",
            "example": "driver_required"
          },
          "timestamp": {
            "description": "UTC time the error was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          },
          "details": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "description": "Optional field-level validation details, keyed by field name."
          }
        }
      },
      "EmspFavoritesFavoriteListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EmspFavoritesFavoriteModel"
            },
            "description": "The driver's favorites, newest first."
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "EmspFavoritesFavoriteModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Stable favorite UUID. Use it in DELETE /favorites/{id}.",
            "format": "uuid",
            "example": "5d4c3b2a-1f0e-4d9c-8b7a-6e5f4d3c2b1a"
          },
          "targetType": {
            "type": "string",
            "description": "What was favorited: \"location\" or \"charger\".",
            "example": "location"
          },
          "targetId": {
            "type": [
              "null",
              "string"
            ],
            "description": "Stable UUID of the favorited location or charger. May be null if the target could not be resolved.",
            "format": "uuid",
            "example": "9f1c2b30-4d5e-6a7b-8c9d-0e1f2a3b4c5d"
          },
          "label": {
            "type": [
              "null",
              "string"
            ],
            "description": "Friendly label — the caller-supplied label, falling back to the target's name. May be null.",
            "example": "Home charger"
          },
          "createdAt": {
            "description": "UTC timestamp when the favorite was saved.",
            "format": "date-time",
            "example": "2026-06-18T14:05:33Z"
          }
        }
      },
      "EmspFavoritesFavoriteResponse": {
        "type": "object",
        "properties": {
          "data": {
            "description": "The saved favorite.",
            "$ref": "#/components/schemas/EmspFavoritesFavoriteModel"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "EmspLocationsCharger": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Stable charger UUID.",
            "format": "uuid",
            "example": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b"
          },
          "serialNumber": {
            "type": [
              "null",
              "string"
            ],
            "description": "Manufacturer hardware serial number, if reported.",
            "example": "SN-A1B2C3D4"
          },
          "status": {
            "type": "string",
            "description": "Last OCPP status reported by the charger.",
            "example": "AVAILABLE"
          },
          "lastHeartbeat": {
            "description": "UTC timestamp of the last heartbeat.",
            "format": "date-time",
            "example": "2026-06-19T18:42:07Z"
          },
          "isOnline": {
            "type": "boolean",
            "description": "True only if a heartbeat arrived within the last 5 minutes.",
            "example": true
          },
          "connectorCount": {
            "type": "integer",
            "description": "Number of active connectors on this charger.",
            "format": "int32",
            "example": 2
          }
        }
      },
      "EmspLocationsChargersResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EmspLocationsCharger"
            },
            "description": "The chargers at this location."
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "EmspLocationsDetailResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/EmspLocationsLocationDetail"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "EmspLocationsErrorResponse": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "description": "Stable machine-readable error slug (e.g. not_found, forbidden, bad_request, driver_required).",
            "example": "not_found"
          },
          "message": {
            "type": "string",
            "description": "Human-readable explanation of the error.",
            "example": "Location with identifier 'c1a2b3d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d' was not found."
          },
          "code": {
            "type": [
              "null",
              "string"
            ],
            "description": "Stable machine-readable error code an agent/MCP tool branches on.",
            "example": "RESOURCE_NOT_FOUND"
          },
          "timestamp": {
            "description": "UTC time the error was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          },
          "details": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "description": "Optional field-level validation details, keyed by field name."
          }
        }
      },
      "EmspLocationsImage": {
        "type": "object",
        "properties": {
          "url": {
            "type": [
              "null",
              "string"
            ],
            "description": "Full-size image URL.",
            "example": "https://cdn.phevnix.com/locations/isla-verde/1.jpg"
          },
          "thumbnailUrl": {
            "type": [
              "null",
              "string"
            ],
            "description": "Thumbnail image URL.",
            "example": "https://cdn.phevnix.com/locations/isla-verde/1_thumb.jpg"
          },
          "type": {
            "type": [
              "null",
              "string"
            ],
            "description": "Image category/type (OCPI image category).",
            "example": "location"
          },
          "width": {
            "type": "integer",
            "description": "Image width in pixels.",
            "format": "int32",
            "example": 1280
          },
          "height": {
            "type": "integer",
            "description": "Image height in pixels.",
            "format": "int32",
            "example": 720
          }
        }
      },
      "EmspLocationsIssueReceipt": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Stable UUID of the operator alert raised from this report.",
            "format": "uuid",
            "example": "a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d"
          },
          "status": {
            "type": "string",
            "description": "Receipt status — always \"received\".",
            "example": "received"
          }
        }
      },
      "EmspLocationsIssueReceiptResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/EmspLocationsIssueReceipt"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "EmspLocationsListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EmspLocationsLocationSummary"
            },
            "description": "The locations (with charger counts and, for /search, distanceKm)."
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "EmspLocationsLocationDetail": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Stable location UUID.",
            "format": "uuid",
            "example": "c1a2b3d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d"
          },
          "name": {
            "type": "string",
            "description": "Display name of the location/site.",
            "example": "Isla Verde Mall"
          },
          "address": {
            "type": [
              "null",
              "string"
            ],
            "description": "Street address of the location.",
            "example": "8169 Calle Marginal"
          },
          "city": {
            "type": [
              "null",
              "string"
            ],
            "description": "City the location is in.",
            "example": "Carolina"
          },
          "state": {
            "type": [
              "null",
              "string"
            ],
            "description": "State / region the location is in.",
            "example": "PR"
          },
          "country": {
            "type": [
              "null",
              "string"
            ],
            "description": "ISO country code of the location.",
            "example": "US"
          },
          "latitude": {
            "type": [
              "null",
              "number"
            ],
            "description": "Latitude in decimal degrees (WGS84).",
            "format": "double",
            "example": 18.4319
          },
          "longitude": {
            "type": [
              "null",
              "number"
            ],
            "description": "Longitude in decimal degrees (WGS84).",
            "format": "double",
            "example": -66.0617
          },
          "hasParking": {
            "type": "boolean",
            "description": "True if the site offers parking.",
            "example": true
          },
          "hasRestrooms": {
            "type": "boolean",
            "description": "True if the site offers restrooms.",
            "example": true
          },
          "hasWifi": {
            "type": "boolean",
            "description": "True if the site offers WiFi.",
            "example": false
          },
          "phone": {
            "type": [
              "null",
              "string"
            ],
            "description": "Site contact phone number, or null.",
            "example": "+1-787-555-0142"
          },
          "openingHours": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "description": "The location's opening hours. Present only when the location has opening times configured.",
                "$ref": "#/components/schemas/EmspLocationsOpeningHours"
              }
            ]
          },
          "images": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EmspLocationsImage"
            },
            "description": "Images attached to the location."
          },
          "chargerCount": {
            "type": "integer",
            "description": "Total number of active chargers at this location.",
            "format": "int32",
            "example": 4
          },
          "availableCount": {
            "type": "integer",
            "description": "Number of chargers that are AVAILABLE and online right now.",
            "format": "int32",
            "example": 3
          },
          "ratingAverage": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "description": "Average driver star rating (1–5), rounded to one decimal, or null if there are no reviews.",
            "format": "double",
            "example": 4.6
          },
          "ratingCount": {
            "type": "integer",
            "description": "Number of driver reviews for this location.",
            "format": "int32",
            "example": 28
          }
        }
      },
      "EmspLocationsLocationSummary": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Stable location UUID. Use it in GET /locations/{id}.",
            "format": "uuid",
            "example": "c1a2b3d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d"
          },
          "name": {
            "type": "string",
            "description": "Display name of the location/site.",
            "example": "Isla Verde Mall"
          },
          "address": {
            "type": [
              "null",
              "string"
            ],
            "description": "Street address of the location.",
            "example": "8169 Calle Marginal"
          },
          "city": {
            "type": [
              "null",
              "string"
            ],
            "description": "City the location is in.",
            "example": "Carolina"
          },
          "state": {
            "type": [
              "null",
              "string"
            ],
            "description": "State / region the location is in.",
            "example": "PR"
          },
          "country": {
            "type": [
              "null",
              "string"
            ],
            "description": "ISO country code of the location.",
            "example": "US"
          },
          "latitude": {
            "type": [
              "null",
              "number"
            ],
            "description": "Latitude in decimal degrees (WGS84).",
            "format": "double",
            "example": 18.4319
          },
          "longitude": {
            "type": [
              "null",
              "number"
            ],
            "description": "Longitude in decimal degrees (WGS84).",
            "format": "double",
            "example": -66.0617
          },
          "hasParking": {
            "type": "boolean",
            "description": "True if the site offers parking.",
            "example": true
          },
          "hasRestrooms": {
            "type": "boolean",
            "description": "True if the site offers restrooms.",
            "example": true
          },
          "hasWifi": {
            "type": "boolean",
            "description": "True if the site offers WiFi.",
            "example": false
          },
          "phone": {
            "type": [
              "null",
              "string"
            ],
            "description": "Site contact phone number, or null if not published.",
            "example": "+1-787-555-0142"
          },
          "chargerCount": {
            "type": "integer",
            "description": "Total number of active (non-deleted) chargers at this location.",
            "format": "int32",
            "example": 4
          },
          "availableCount": {
            "type": "integer",
            "description": "Number of chargers that are both AVAILABLE and online (recent heartbeat) right now — powers the green/amber/red map pin.",
            "format": "int32",
            "example": 3
          },
          "maxPowerKw": {
            "type": [
              "null",
              "number"
            ],
            "description": "Highest charger power rating at this location, in kW.",
            "format": "double",
            "example": 150
          },
          "connectorTypes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Distinct connector standards available at this location — powers connector-type filters."
          },
          "distanceKm": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "description": "Distance from the search point, in kilometres. Present ONLY on geo-search (/locations/search) results.",
            "format": "double",
            "example": 2.137
          }
        }
      },
      "EmspLocationsOpeningHours": {
        "type": "object",
        "properties": {
          "twentyFourSeven": {
            "type": "boolean",
            "description": "True if the location is open 24/7 (the regular schedule is then ignored).",
            "example": false
          },
          "regular": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EmspLocationsRegularHours"
            },
            "description": "Weekly opening windows, ordered by weekday."
          }
        }
      },
      "EmspLocationsRegularHours": {
        "type": "object",
        "properties": {
          "weekday": {
            "type": "integer",
            "description": "Day of week, 1 = Monday … 7 = Sunday (OCPI convention).",
            "format": "int32",
            "example": 1
          },
          "open": {
            "type": [
              "null",
              "string"
            ],
            "description": "Opening time, HH:mm (24h).",
            "example": "08:00"
          },
          "close": {
            "type": [
              "null",
              "string"
            ],
            "description": "Closing time, HH:mm (24h).",
            "example": "22:00"
          }
        }
      },
      "EmspLocationsReview": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Stable review UUID.",
            "format": "uuid",
            "example": "7e6d5c4b-3a2b-1c0d-9e8f-7a6b5c4d3e2f"
          },
          "rating": {
            "type": "integer",
            "description": "Star rating, 1–5.",
            "format": "int32",
            "example": 5
          },
          "comment": {
            "type": [
              "null",
              "string"
            ],
            "description": "Free-text review comment, or null.",
            "example": "Fast chargers, easy to find."
          },
          "authorName": {
            "type": [
              "null",
              "string"
            ],
            "description": "Reviewer's first name, or \"Driver\" when unavailable.",
            "example": "Maya"
          },
          "isMine": {
            "type": "boolean",
            "description": "True if this review belongs to the currently authenticated driver.",
            "example": false
          },
          "createdAt": {
            "description": "UTC time the review was created.",
            "format": "date-time",
            "example": "2026-05-02T14:10:00Z"
          },
          "updatedAt": {
            "description": "UTC time the review was last updated.",
            "format": "date-time",
            "example": "2026-05-02T14:10:00Z"
          }
        }
      },
      "EmspLocationsReviewResult": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Stable review UUID.",
            "format": "uuid",
            "example": "7e6d5c4b-3a2b-1c0d-9e8f-7a6b5c4d3e2f"
          },
          "rating": {
            "type": "integer",
            "description": "Star rating, 1–5.",
            "format": "int32",
            "example": 5
          },
          "comment": {
            "type": [
              "null",
              "string"
            ],
            "description": "Free-text review comment, or null.",
            "example": "Fast chargers, easy to find."
          },
          "createdAt": {
            "description": "UTC time the review was created.",
            "format": "date-time",
            "example": "2026-05-02T14:10:00Z"
          },
          "updatedAt": {
            "description": "UTC time the review was last updated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "EmspLocationsReviewResultResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/EmspLocationsReviewResult"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "EmspLocationsReviews": {
        "type": "object",
        "properties": {
          "summary": {
            "description": "Aggregate rating summary.",
            "$ref": "#/components/schemas/EmspLocationsReviewSummary"
          },
          "reviews": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EmspLocationsReview"
            },
            "description": "Up to 50 most-recent reviews."
          }
        }
      },
      "EmspLocationsReviewsResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/EmspLocationsReviews"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "EmspLocationsReviewSummary": {
        "type": "object",
        "properties": {
          "average": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "description": "Average star rating (1–5), rounded to one decimal; 0 when there are no reviews.",
            "format": "double",
            "example": 4.6
          },
          "count": {
            "type": "integer",
            "description": "Number of reviews.",
            "format": "int32",
            "example": 28
          }
        }
      },
      "EmspNetworkBranding": {
        "type": "object",
        "properties": {
          "networkId": {
            "type": "string",
            "description": "UUID of the network the branding belongs to (echoes the path parameter).",
            "format": "uuid",
            "example": "3f9a1c20-6b7d-4e8f-9a0b-1c2d3e4f5a6b"
          },
          "name": {
            "type": "string",
            "description": "Public display name of the network (operator).",
            "example": "Phevnix PR"
          },
          "logoUrl": {
            "type": [
              "null",
              "string"
            ],
            "description": "URL of the network's logo, or null if unset.",
            "example": "https://cdn.phevnix.com/networks/phevnix-pr/logo.svg"
          },
          "faviconUrl": {
            "type": [
              "null",
              "string"
            ],
            "description": "URL of the network's favicon, or null if unset.",
            "example": "https://cdn.phevnix.com/networks/phevnix-pr/favicon.ico"
          },
          "logoBackground": {
            "type": "string",
            "description": "Recommended background tone for the logo — always either \"light\" or \"dark\".",
            "example": "light"
          },
          "primaryColor": {
            "type": [
              "null",
              "string"
            ],
            "description": "Primary brand color (hex, e.g. \"#0EA5E9\"), or null if unset.",
            "example": "#0EA5E9"
          },
          "secondaryColor": {
            "type": [
              "null",
              "string"
            ],
            "description": "Secondary brand color (hex), or null if unset.",
            "example": "#0F172A"
          },
          "termsUrl": {
            "type": [
              "null",
              "string"
            ],
            "description": "URL of the network's Terms of Service, or null if unset.",
            "example": "https://phevnix.com/terms"
          },
          "privacyUrl": {
            "type": [
              "null",
              "string"
            ],
            "description": "URL of the network's Privacy Policy, or null if unset.",
            "example": "https://phevnix.com/privacy"
          }
        }
      },
      "EmspNetworkBrandingErrorResponse": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "description": "Stable machine-readable error slug (e.g. not_found).",
            "example": "not_found"
          },
          "message": {
            "type": "string",
            "description": "Human-readable explanation of the error.",
            "example": "network with identifier '3f9a1c20-6b7d-4e8f-9a0b-1c2d3e4f5a6b' was not found."
          },
          "code": {
            "type": [
              "null",
              "string"
            ],
            "description": "Stable machine-readable error code an agent/MCP tool branches on.",
            "example": "RESOURCE_NOT_FOUND"
          },
          "timestamp": {
            "description": "UTC time the error was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          },
          "details": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "description": "Optional field-level validation details, keyed by field name."
          }
        }
      },
      "EmspNetworkBrandingResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/EmspNetworkBranding"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "EmspNotificationsChannels": {
        "type": "object",
        "properties": {
          "push": {
            "type": "boolean",
            "description": "Whether web/app push notifications are enabled.",
            "example": true
          },
          "email": {
            "type": "boolean",
            "description": "Whether email notifications are enabled.",
            "example": true
          },
          "sms": {
            "type": "boolean",
            "description": "Whether SMS notifications are enabled.",
            "example": false
          }
        }
      },
      "EmspNotificationsContact": {
        "type": "object",
        "properties": {
          "email": {
            "type": [
              "null",
              "string"
            ],
            "description": "Email address notifications are sent to, or null to use the driver's account email.",
            "example": "driver@example.com"
          },
          "phoneNumber": {
            "type": [
              "null",
              "string"
            ],
            "description": "Phone number SMS notifications are sent to (E.164), or null.",
            "example": "+17875551234"
          }
        }
      },
      "EmspNotificationsErrorResponse": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "description": "Stable machine-readable error slug (driver_required, forbidden, not_found).",
            "example": "driver_required"
          },
          "message": {
            "type": "string",
            "description": "Human-readable explanation of the error.",
            "example": "Notification preferences require driver authentication. Log in via /api/emsp/v1/auth/driver/login."
          },
          "code": {
            "type": [
              "null",
              "string"
            ],
            "description": "Stable machine-readable error code (defaults to the error slug when not set explicitly).",
            "example": "driver_required"
          },
          "timestamp": {
            "description": "UTC time the error was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "EmspNotificationsEvents": {
        "type": "object",
        "properties": {
          "sessionStarted": {
            "type": "boolean",
            "description": "Notify when a charging session starts.",
            "example": true
          },
          "sessionStopped": {
            "type": "boolean",
            "description": "Notify when a charging session stops.",
            "example": true
          },
          "sessionFailed": {
            "type": "boolean",
            "description": "Notify when a charging session fails to start or is interrupted.",
            "example": true
          },
          "reservationReminder": {
            "type": "boolean",
            "description": "Notify ahead of an upcoming reservation.",
            "example": true
          },
          "payment": {
            "type": "boolean",
            "description": "Notify on payment events (charge captured, payment failed).",
            "example": true
          }
        }
      },
      "EmspNotificationsPreferences": {
        "type": "object",
        "properties": {
          "channels": {
            "description": "Enabled delivery channels.",
            "$ref": "#/components/schemas/EmspNotificationsChannels"
          },
          "events": {
            "description": "Per-event-category opt-ins.",
            "$ref": "#/components/schemas/EmspNotificationsEvents"
          },
          "contact": {
            "description": "Contact details notifications are delivered to.",
            "$ref": "#/components/schemas/EmspNotificationsContact"
          },
          "updatedAt": {
            "description": "UTC time the preferences were last updated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "EmspNotificationsPreferencesResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/EmspNotificationsPreferences"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "EmspPaymentsCard": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Stripe PaymentMethod id for the saved card. Use it in /methods/{id}/default and DELETE /methods/{id}.",
            "example": "pm_1AbCdEfGhIjKlMnOpQrStUvW"
          },
          "brand": {
            "type": "string",
            "description": "Card brand (visa, mastercard, amex, …).",
            "example": "visa"
          },
          "last4": {
            "type": "string",
            "description": "Last four digits of the card number.",
            "example": "4242"
          },
          "expMonth": {
            "type": "integer",
            "description": "Card expiry month (1–12).",
            "format": "int64",
            "example": 12
          },
          "expYear": {
            "type": "integer",
            "description": "Card expiry year (four digits).",
            "format": "int64",
            "example": 2029
          },
          "isDefault": {
            "type": "boolean",
            "description": "True if this is the driver's default card for charges on the network.",
            "example": true
          }
        }
      },
      "EmspPaymentsCheckoutResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/EmspPaymentsCheckoutStatus"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "EmspPaymentsCheckoutStatus": {
        "type": "object",
        "properties": {
          "paymentMode": {
            "type": "string",
            "description": "Always 'phevnix_managed' here.",
            "example": "phevnix_managed"
          },
          "sessionId": {
            "type": "string",
            "description": "The charging session UUID this status is for.",
            "format": "uuid",
            "example": "7c6f5e40-1a2b-3c4d-5e6f-7a8b9c0d1e2f"
          },
          "sessionStatus": {
            "type": [
              "null",
              "string"
            ],
            "description": "Current session status (active, completed, …).",
            "example": "completed"
          },
          "paymentStatus": {
            "type": [
              "null",
              "string"
            ],
            "description": "Payment lifecycle: null (no charge yet / free), authorized (pre-auth hold), captured, failed, refunded.",
            "example": "captured"
          },
          "isFree": {
            "type": "boolean",
            "description": "True if the session is free (no charge applies).",
            "example": false
          },
          "total": {
            "type": [
              "null",
              "number"
            ],
            "description": "The session's total amount in the network currency.",
            "format": "double",
            "example": 8.45
          },
          "currency": {
            "type": [
              "null",
              "string"
            ],
            "description": "ISO-4217 currency code for the total.",
            "example": "USD"
          },
          "captured": {
            "type": "boolean",
            "description": "True when the final amount has already been captured (paymentStatus == 'captured').",
            "example": true
          },
          "note": {
            "type": "string",
            "description": "Guidance: capture happens automatically at session stop; no manual checkout is needed.",
            "example": "Capture happens automatically when the session stops; no manual checkout is needed for managed networks. A pre-authorization hold is placed at session start and the final amount is captured on stop."
          }
        }
      },
      "EmspPaymentsConfigResponse": {
        "type": "object",
        "properties": {
          "data": {
            "description": "Payment configuration for the resolved network. Shape varies by paymentMode (self_managed vs phevnix_managed).",
            "$ref": "#/components/schemas/EmspPaymentsManagedConfig"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "EmspPaymentsErrorResponse": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "description": "Stable machine-readable error slug (e.g. driver_required, payments_not_enabled, stripe_error).",
            "example": "payments_not_enabled"
          },
          "message": {
            "type": "string",
            "description": "Human-readable explanation of the error.",
            "example": "Payments are not enabled for this network."
          },
          "code": {
            "type": [
              "null",
              "string"
            ],
            "description": "Stable machine-readable error code (defaults to the error slug when not set explicitly).",
            "example": "payments_not_enabled"
          },
          "timestamp": {
            "description": "UTC time the error was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "EmspPaymentsManagedConfig": {
        "type": "object",
        "properties": {
          "paymentMode": {
            "type": "string",
            "description": "Always 'phevnix_managed' here — the operator opted into Phevnix billing rails.",
            "example": "phevnix_managed"
          },
          "phevnixBillingAvailable": {
            "type": "boolean",
            "description": "True only when the network's payment settings are configured and enabled.",
            "example": true
          },
          "provider": {
            "type": "string",
            "description": "Payment provider in use; 'stripe' unless a different provider is configured.",
            "example": "stripe"
          },
          "publishableKey": {
            "type": [
              "null",
              "string"
            ],
            "description": "The PUBLIC (publishable) Stripe key the app uses to initialize Stripe.js. Never a secret/webhook key.",
            "example": "pk_live_51AbCdEfGhIjKlMnOpQrStUvWx"
          },
          "currency": {
            "type": "string",
            "description": "ISO-4217 currency code charges are settled in (falls back to the network's default currency).",
            "example": "USD"
          },
          "methods": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The payment method types enabled for this network (e.g. card, apple_pay)."
          },
          "preAuthorizationAmount": {
            "type": [
              "null",
              "number"
            ],
            "description": "Amount, in the network currency, held as a pre-authorization at session start. Null if none.",
            "format": "double",
            "example": 25
          },
          "minimumAmount": {
            "type": [
              "null",
              "number"
            ],
            "description": "Minimum chargeable amount for a session, in the network currency. Null if unset.",
            "format": "double",
            "example": 1
          },
          "maximumAmount": {
            "type": [
              "null",
              "number"
            ],
            "description": "Maximum chargeable amount for a session, in the network currency. Null if unset.",
            "format": "double",
            "example": 500
          }
        }
      },
      "EmspPaymentsMethods": {
        "type": "object",
        "properties": {
          "paymentMode": {
            "type": "string",
            "description": "Always 'phevnix_managed' — saved cards only exist for managed networks.",
            "example": "phevnix_managed"
          },
          "methods": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EmspPaymentsCard"
            },
            "description": "The driver's saved cards."
          }
        }
      },
      "EmspPaymentsMethodsResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/EmspPaymentsMethods"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "EmspPaymentsSetupCheckout": {
        "type": "object",
        "properties": {
          "url": {
            "type": [
              "null",
              "string"
            ],
            "description": "Stripe-hosted card-setup page URL. Open it in a browser; Stripe redirects back to the return URL when done.",
            "example": "https://checkout.stripe.com/c/pay/cs_test_a1B2c3D4e5F6"
          }
        }
      },
      "EmspPaymentsSetupCheckoutResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/EmspPaymentsSetupCheckout"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "EmspPaymentsSetupIntent": {
        "type": "object",
        "properties": {
          "clientSecret": {
            "type": [
              "null",
              "string"
            ],
            "description": "Stripe SetupIntent client_secret — pass to confirmCardSetup() / the Payment Element to save the card.",
            "example": "seti_1AbCdEfGhIjKl_secret_MnOpQrStUvWxYz"
          },
          "publishableKey": {
            "type": [
              "null",
              "string"
            ],
            "description": "The publishable Stripe key to initialize Stripe.js with for this SetupIntent.",
            "example": "pk_live_51AbCdEfGhIjKlMnOpQrStUvWx"
          }
        }
      },
      "EmspPaymentsSetupIntentResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/EmspPaymentsSetupIntent"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "EmspPushErrorResponse": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "description": "Stable machine-readable error slug (driver_required, not_found, bad_request).",
            "example": "driver_required"
          },
          "message": {
            "type": "string",
            "description": "Human-readable explanation of the error.",
            "example": "Push requires driver authentication. Log in via /api/emsp/v1/auth/driver/login."
          },
          "code": {
            "type": [
              "null",
              "string"
            ],
            "description": "Stable machine-readable error code (defaults to the error slug when not set explicitly).",
            "example": "driver_required"
          },
          "timestamp": {
            "description": "UTC time the error was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "EmspPushSubscribeResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/EmspPushSubscribeResult"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "EmspPushSubscribeResult": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "description": "Always 'subscribed' — the device's web-push subscription is now registered.",
            "example": "subscribed"
          }
        }
      },
      "EmspPushTestResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/EmspPushTestResult"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "EmspPushTestResult": {
        "type": "object",
        "properties": {
          "sent": {
            "type": "integer",
            "description": "Number of devices the test push was successfully delivered to.",
            "format": "int32",
            "example": 2
          },
          "subscriptions": {
            "type": "integer",
            "description": "Total number of registered device subscriptions for the driver (some may have been pruned if gone).",
            "format": "int32",
            "example": 2
          }
        }
      },
      "EmspRemoteControlErrorResponse": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "description": "Stable machine-readable error slug (forbidden, not_found, bad_request).",
            "example": "forbidden"
          },
          "message": {
            "type": "string",
            "description": "Human-readable explanation of the error.",
            "example": "You can only remote-control a charger you are actively using."
          },
          "code": {
            "type": [
              "null",
              "string"
            ],
            "description": "Stable machine-readable error code (defaults to the error slug when not set explicitly).",
            "example": "forbidden"
          },
          "timestamp": {
            "description": "UTC time the error was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "EmspRemoteControlResetResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/EmspRemoteControlResetResult"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response (the command was dispatched; see data.accepted).",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "EmspRemoteControlResetResult": {
        "type": "object",
        "properties": {
          "chargerId": {
            "type": "string",
            "description": "The charger UUID the command was sent to.",
            "format": "uuid",
            "example": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b"
          },
          "type": {
            "type": "string",
            "description": "The reset type actually issued: Soft (default) or Hard. Driver-authenticated callers are forced to Soft even if they request Hard.",
            "example": "Soft"
          },
          "accepted": {
            "type": "boolean",
            "description": "Whether the charger accepted the command.",
            "example": true
          },
          "reason": {
            "type": [
              "null",
              "string"
            ],
            "description": "Public-facing reason when not accepted, or null on success.",
            "example": "The charger rejected the request."
          },
          "retryable": {
            "type": "boolean",
            "description": "True when the failure was transient and the request can be retried.",
            "example": false
          }
        }
      },
      "EmspRemoteControlTriggerResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/EmspRemoteControlTriggerResult"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response (the command was dispatched; see data.accepted).",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "EmspRemoteControlTriggerResult": {
        "type": "object",
        "properties": {
          "chargerId": {
            "type": "string",
            "description": "The charger UUID the command was sent to.",
            "format": "uuid",
            "example": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b"
          },
          "message": {
            "type": "string",
            "description": "The OCPP message the charger was asked to re-send (BootNotification, StatusNotification, MeterValues, …).",
            "example": "StatusNotification"
          },
          "accepted": {
            "type": "boolean",
            "description": "Whether the charger accepted the command.",
            "example": true
          },
          "reason": {
            "type": [
              "null",
              "string"
            ],
            "description": "Public-facing reason when not accepted, or null on success.",
            "example": "The charger rejected the request."
          },
          "retryable": {
            "type": "boolean",
            "description": "True when the failure was transient and the request can be retried.",
            "example": false
          }
        }
      },
      "EmspRemoteControlUnlockResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/EmspRemoteControlUnlockResult"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response (the command was dispatched; see data.accepted for the charger's verdict).",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "EmspRemoteControlUnlockResult": {
        "type": "object",
        "properties": {
          "chargerId": {
            "type": "string",
            "description": "The charger UUID the command was sent to.",
            "format": "uuid",
            "example": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b"
          },
          "connectorNumber": {
            "type": "integer",
            "description": "The connector number that was asked to unlock (defaults to 1).",
            "format": "int32",
            "example": 1
          },
          "accepted": {
            "type": "boolean",
            "description": "Whether the charger accepted the command. False means the charger rejected it or did not respond.",
            "example": true
          },
          "reason": {
            "type": [
              "null",
              "string"
            ],
            "description": "Public-facing reason when not accepted, or null on success.",
            "example": "The charger rejected the request."
          },
          "retryable": {
            "type": "boolean",
            "description": "True when the failure was transient (e.g. charger unreachable) and the request can be retried.",
            "example": false
          }
        }
      },
      "EmspReservationsErrorResponse": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "description": "Stable machine-readable error code (e.g. forbidden, bad_request, not_found).",
            "example": "bad_request"
          },
          "message": {
            "type": "string",
            "description": "Human-readable explanation of the error.",
            "example": "This connector already has an active reservation. Cancel it before reserving again."
          },
          "code": {
            "type": [
              "null",
              "string"
            ],
            "description": "Stable machine-readable error code an agent can branch on (defaults to the `error` slug).",
            "example": "INVALID_REQUEST"
          },
          "timestamp": {
            "description": "UTC time the error was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:45:01Z"
          }
        }
      },
      "EmspReservationsListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReservationResponse"
            },
            "description": "The matching reservations, most-recent created first (capped at the page size)."
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:45:01Z"
          }
        }
      },
      "EmspReservationsRejectedResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Always false — the charger rejected the reservation.",
            "example": false
          },
          "error": {
            "type": "string",
            "description": "Stable machine-readable error code for a charger-side rejection.",
            "example": "reservation_rejected"
          },
          "message": {
            "type": "string",
            "description": "Human-readable rejection reason from the charger.",
            "example": "The charger rejected the reservation."
          }
        }
      },
      "EmspReservationsResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ReservationResponse"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:45:01Z"
          }
        }
      },
      "EmspScheduledChargingDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Stable scheduled-charge UUID. Use it in DELETE /charging/schedule/{id} to cancel.",
            "format": "uuid",
            "example": "7c1f0a23-9b4d-4e5a-8c6f-1d2e3f4a5b6c"
          },
          "chargerId": {
            "type": "string",
            "description": "UUID of the charger the session will be started on at the scheduled time.",
            "format": "uuid",
            "example": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b"
          },
          "connectorNumber": {
            "type": "integer",
            "description": "Connector number on the charger (1-based) the session will start on.",
            "format": "int32",
            "example": 1
          },
          "scheduledTime": {
            "description": "UTC time at which the background trigger will fire the remote start.",
            "format": "date-time",
            "example": "2026-06-20T06:00:00Z"
          },
          "status": {
            "type": "string",
            "description": "Lifecycle state: Pending (waiting to fire), Fired (start dispatched), Failed, or Cancelled.",
            "example": "Pending"
          },
          "statusReason": {
            "type": [
              "null",
              "string"
            ],
            "description": "Why the schedule reached its current status (e.g. the charger's rejection reason on Failed). Null while Pending or on a clean fire.",
            "example": "Charger did not respond"
          },
          "firedAt": {
            "description": "UTC time the start was actually dispatched, or null if it has not fired yet.",
            "format": "date-time",
            "example": "2026-06-20T06:00:01Z"
          },
          "createdAt": {
            "description": "UTC time the schedule was created.",
            "format": "date-time",
            "example": "2026-06-19T22:14:55Z"
          }
        }
      },
      "EmspScheduledChargingErrorResponse": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "description": "Stable machine-readable error code (e.g. forbidden, bad_request, not_found).",
            "example": "bad_request"
          },
          "message": {
            "type": "string",
            "description": "Human-readable explanation of the error.",
            "example": "scheduledTime must be in the future"
          },
          "code": {
            "type": [
              "null",
              "string"
            ],
            "description": "Stable machine-readable error code an agent can branch on (defaults to the `error` slug).",
            "example": "INVALID_REQUEST"
          },
          "timestamp": {
            "description": "UTC time the error was generated.",
            "format": "date-time",
            "example": "2026-06-19T22:14:55Z"
          }
        }
      },
      "EmspScheduledChargingListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EmspScheduledChargingDto"
            },
            "description": "The driver's scheduled charges, most-recent scheduledTime first (capped at 100)."
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T22:14:55Z"
          }
        }
      },
      "EmspScheduledChargingResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/EmspScheduledChargingDto"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T22:14:55Z"
          }
        }
      },
      "EmspSessionMeterValuesResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicApiMeterValueDto"
            },
            "description": "Meter-value samples for the session, oldest first (charging-curve order)."
          },
          "count": {
            "type": "integer",
            "description": "Number of samples returned in this response.",
            "format": "int32",
            "example": 96
          },
          "truncated": {
            "type": "boolean",
            "description": "True when the session has more samples than the requested limit and the curve was cut off.",
            "example": false
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "EmspSessionsDetailResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/PublicApiSessionDetailDto"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "EmspSessionsErrorResponse": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "description": "Stable machine-readable error code (e.g. forbidden, not_found).",
            "example": "not_found"
          },
          "message": {
            "type": "string",
            "description": "Human-readable explanation of the error.",
            "example": "Session with identifier '…' was not found."
          },
          "code": {
            "type": [
              "null",
              "string"
            ],
            "description": "Stable machine-readable error code an agent can branch on (defaults to the `error` slug).",
            "example": "RESOURCE_NOT_FOUND"
          },
          "timestamp": {
            "description": "UTC time the error was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "EmspSessionsListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicApiSessionDto"
            },
            "description": "The page of charging sessions, most-recent start first."
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          },
          "pagination": {
            "$ref": "#/components/schemas/EmspSessionsPagination"
          }
        }
      },
      "EmspSessionsPagination": {
        "type": "object",
        "properties": {
          "totalCount": {
            "type": "integer",
            "description": "Total number of sessions matching the filter, across all pages.",
            "format": "int32",
            "example": 248
          },
          "page": {
            "type": "integer",
            "description": "1-based page index of this result set.",
            "format": "int32",
            "example": 1
          },
          "pageSize": {
            "type": "integer",
            "description": "Items per page (1–100; defaults to 20).",
            "format": "int32",
            "example": 20
          },
          "totalPages": {
            "type": "integer",
            "description": "Total number of pages at the current pageSize.",
            "format": "int32",
            "example": 13
          },
          "hasNextPage": {
            "type": "boolean",
            "description": "True when a page after this one exists.",
            "example": true
          },
          "hasPreviousPage": {
            "type": "boolean",
            "description": "True when a page before this one exists.",
            "example": false
          }
        }
      },
      "EmspSmartChargingClearLimitDto": {
        "type": "object",
        "properties": {
          "chargerId": {
            "type": "string",
            "description": "UUID of the charger the limit was cleared on.",
            "format": "uuid",
            "example": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b"
          },
          "connectorNumber": {
            "type": "integer",
            "description": "Connector number on the charger (1-based) the cleared limit applied to.",
            "format": "int32",
            "example": 1
          },
          "profileId": {
            "type": "integer",
            "description": "The OCPP charging-profile id that was targeted for removal (reserved 90000+connector range).",
            "format": "int32",
            "example": 90001
          },
          "accepted": {
            "type": "boolean",
            "description": "True if the charger accepted the ClearChargingProfile command.",
            "example": true
          },
          "reason": {
            "type": [
              "null",
              "string"
            ],
            "description": "Why the charger rejected the request, or null when accepted.",
            "example": "The charger rejected the request."
          },
          "retryable": {
            "type": "boolean",
            "description": "True when a failed command is worth retrying shortly; false for a definitive rejection.",
            "example": false
          }
        }
      },
      "EmspSmartChargingClearLimitResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/EmspSmartChargingClearLimitDto"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "EmspSmartChargingErrorResponse": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "description": "Stable machine-readable error code (e.g. forbidden, bad_request, not_found).",
            "example": "bad_request"
          },
          "message": {
            "type": "string",
            "description": "Human-readable explanation of the error.",
            "example": "limit must be greater than zero."
          },
          "code": {
            "type": [
              "null",
              "string"
            ],
            "description": "Stable machine-readable error code an agent can branch on (defaults to the `error` slug).",
            "example": "INVALID_REQUEST"
          },
          "timestamp": {
            "description": "UTC time the error was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "EmspSmartChargingLimitDto": {
        "type": "object",
        "properties": {
          "chargerId": {
            "type": "string",
            "description": "UUID of the charger the schedule was queried from.",
            "format": "uuid",
            "example": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b"
          },
          "connectorNumber": {
            "type": "integer",
            "description": "Connector number on the charger (1-based) the schedule applies to.",
            "format": "int32",
            "example": 1
          },
          "unit": {
            "type": "string",
            "description": "Charging-rate unit of the schedule: A (amps) or W (watts).",
            "example": "A"
          },
          "accepted": {
            "type": "boolean",
            "description": "True if the charger answered the GetCompositeSchedule request successfully.",
            "example": true
          },
          "schedule": {
            "description": "The raw OCPP composite schedule the charger returned (chargingSchedulePeriod entries), or null when the charger reported none. Shape is pass-through from OCPP 1.6."
          }
        }
      },
      "EmspSmartChargingLimitResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/EmspSmartChargingLimitDto"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "EmspSmartChargingSetLimitDto": {
        "type": "object",
        "properties": {
          "chargerId": {
            "type": "string",
            "description": "UUID of the charger the limit was applied to.",
            "format": "uuid",
            "example": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b"
          },
          "connectorNumber": {
            "type": "integer",
            "description": "Connector number on the charger (1-based) the limit applies to.",
            "format": "int32",
            "example": 1
          },
          "unit": {
            "type": "string",
            "description": "Charging-rate unit of the requested limit: A (amps) or W (watts).",
            "example": "A"
          },
          "limit": {
            "type": "number",
            "description": "The requested maximum charging rate in the given unit. A driver cap only ever reduces the rate — the network's load-balancing ceiling still applies.",
            "format": "double",
            "example": 16
          },
          "profileId": {
            "type": "integer",
            "description": "The OCPP charging-profile id used for this driver cap (reserved 90000+connector range so it is individually clearable).",
            "format": "int32",
            "example": 90001
          },
          "accepted": {
            "type": "boolean",
            "description": "True if the charger accepted the SetChargingProfile command.",
            "example": true
          },
          "reason": {
            "type": [
              "null",
              "string"
            ],
            "description": "Why the charger rejected the request, or null when accepted.",
            "example": "The charger rejected the request."
          },
          "retryable": {
            "type": "boolean",
            "description": "True when a failed command is worth retrying shortly (charger unreachable now but may reconnect); false for a definitive rejection.",
            "example": false
          }
        }
      },
      "EmspSmartChargingSetLimitResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/EmspSmartChargingSetLimitDto"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "EmspTariffsDetailResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/EmspTariffsTariff"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "EmspTariffsErrorResponse": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "description": "Stable machine-readable error slug (e.g. not_found, forbidden).",
            "example": "not_found"
          },
          "message": {
            "type": "string",
            "description": "Human-readable explanation of the error.",
            "example": "Tariff with identifier 'd4c3b2a1-6f5e-4d3c-2b1a-0f9e8d7c6b5a' was not found."
          },
          "code": {
            "type": [
              "null",
              "string"
            ],
            "description": "Stable machine-readable error code an agent/MCP tool branches on.",
            "example": "RESOURCE_NOT_FOUND"
          },
          "timestamp": {
            "description": "UTC time the error was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          },
          "details": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "description": "Optional field-level validation details, keyed by field name."
          }
        }
      },
      "EmspTariffsListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EmspTariffsTariff"
            },
            "description": "The available tariffs."
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "EmspTariffsTariff": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Stable tariff UUID. Use it in GET /tariffs/{id}.",
            "format": "uuid",
            "example": "d4c3b2a1-6f5e-4d3c-2b1a-0f9e8d7c6b5a"
          },
          "name": {
            "type": [
              "null",
              "string"
            ],
            "description": "Display name of the tariff.",
            "example": "Standard AC"
          },
          "description": {
            "type": [
              "null",
              "string"
            ],
            "description": "Free-text description of the tariff.",
            "example": "Default rate for AC chargers."
          },
          "type": {
            "type": [
              "null",
              "string"
            ],
            "description": "Tariff type/category (e.g. REGULAR, AD_HOC_PAYMENT, PROFILE_GREEN).",
            "example": "REGULAR"
          },
          "currency": {
            "type": [
              "null",
              "string"
            ],
            "description": "ISO 4217 currency code the rates are expressed in.",
            "example": "USD"
          },
          "isFree": {
            "type": "boolean",
            "description": "True if charging under this tariff is free (all rates ignored).",
            "example": false
          },
          "energyRate": {
            "type": [
              "null",
              "number"
            ],
            "description": "Per-kWh energy rate, in the tariff currency.",
            "format": "double",
            "example": 0.35
          },
          "timeRate": {
            "type": [
              "null",
              "number"
            ],
            "description": "Per-minute charging-time rate, in the tariff currency.",
            "format": "double",
            "example": 0
          },
          "idleRate": {
            "type": [
              "null",
              "number"
            ],
            "description": "Per-minute idle fee charged after the grace period, in the tariff currency.",
            "format": "double",
            "example": 0.4
          },
          "sessionFee": {
            "type": [
              "null",
              "number"
            ],
            "description": "Flat per-session fee, in the tariff currency.",
            "format": "double",
            "example": 0.5
          },
          "minimumSessionFee": {
            "type": [
              "null",
              "number"
            ],
            "description": "Minimum total charged for any session under this tariff.",
            "format": "double",
            "example": 1
          },
          "maximumSessionFee": {
            "type": [
              "null",
              "number"
            ],
            "description": "Maximum (capped) total charged for any session under this tariff.",
            "format": "double",
            "example": 50
          },
          "taxRate": {
            "type": [
              "null",
              "number"
            ],
            "description": "Tax rate applied to the session total, as a percentage.",
            "format": "double",
            "example": 11.5
          },
          "effectiveFrom": {
            "description": "UTC timestamp the tariff becomes effective.",
            "format": "date-time",
            "example": "2026-01-01T00:00:00Z"
          },
          "effectiveTo": {
            "description": "UTC timestamp the tariff stops being effective, or null if open-ended.",
            "format": "date-time",
            "example": "2026-12-31T23:59:59Z"
          }
        }
      },
      "EmspTransactionsDetailResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/PublicApiTransactionDetailDto"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "EmspTransactionsErrorResponse": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "description": "Stable machine-readable error code (e.g. forbidden, bad_request, not_found).",
            "example": "not_found"
          },
          "message": {
            "type": "string",
            "description": "Human-readable explanation of the error.",
            "example": "Transaction with identifier '…' was not found."
          },
          "code": {
            "type": [
              "null",
              "string"
            ],
            "description": "Stable machine-readable error code an agent can branch on (defaults to the `error` slug).",
            "example": "RESOURCE_NOT_FOUND"
          },
          "timestamp": {
            "description": "UTC time the error was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "EmspTransactionsInvoiceResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/PublicApiInvoiceDto"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "EmspTransactionsListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicApiTransactionDto"
            },
            "description": "The page of transactions (charge detail records), most-recent end time first."
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          },
          "pagination": {
            "$ref": "#/components/schemas/EmspTransactionsPagination"
          }
        }
      },
      "EmspTransactionsPagination": {
        "type": "object",
        "properties": {
          "totalCount": {
            "type": "integer",
            "description": "Total number of transactions (CDRs) matching the filter, across all pages.",
            "format": "int32",
            "example": 412
          },
          "page": {
            "type": "integer",
            "description": "1-based page index of this result set.",
            "format": "int32",
            "example": 1
          },
          "pageSize": {
            "type": "integer",
            "description": "Items per page (1–100; defaults to 20).",
            "format": "int32",
            "example": 20
          },
          "totalPages": {
            "type": "integer",
            "description": "Total number of pages at the current pageSize.",
            "format": "int32",
            "example": 21
          },
          "hasNextPage": {
            "type": "boolean",
            "description": "True when a page after this one exists.",
            "example": true
          },
          "hasPreviousPage": {
            "type": "boolean",
            "description": "True when a page before this one exists.",
            "example": false
          }
        }
      },
      "EmspTransactionsPricingResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/PricingCalculationDto"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "EmspUsersErrorResponse": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "description": "Stable machine-readable error slug (e.g. not_found, forbidden, conflict).",
            "example": "conflict"
          },
          "message": {
            "type": "string",
            "description": "Human-readable explanation of the error.",
            "example": "A user with email 'maya@example.com' already exists in this network."
          },
          "code": {
            "type": [
              "null",
              "string"
            ],
            "description": "Stable machine-readable error code an agent can branch on (defaults to the error slug).",
            "example": "RESOURCE_CONFLICT"
          },
          "timestamp": {
            "description": "UTC time the error was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          },
          "details": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "description": "Optional field-level validation details, keyed by field name."
          }
        }
      },
      "EmspUsersPagination": {
        "type": "object",
        "properties": {
          "totalCount": {
            "type": "integer",
            "description": "Total number of users across all pages.",
            "format": "int32",
            "example": 137
          },
          "page": {
            "type": "integer",
            "description": "1-based page index of this result set.",
            "format": "int32",
            "example": 1
          },
          "pageSize": {
            "type": "integer",
            "description": "Items per page (1–100; defaults to 20).",
            "format": "int32",
            "example": 20
          },
          "totalPages": {
            "type": "integer",
            "description": "Total number of pages at the current pageSize.",
            "format": "int32",
            "example": 7
          },
          "hasNextPage": {
            "type": "boolean",
            "description": "True when a page after this one exists.",
            "example": true
          },
          "hasPreviousPage": {
            "type": "boolean",
            "description": "True when a page before this one exists.",
            "example": false
          }
        }
      },
      "EmspUsersUserListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EmspUsersUserModel"
            },
            "description": "The page of users."
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          },
          "pagination": {
            "description": "Page metadata for the result set.",
            "$ref": "#/components/schemas/EmspUsersPagination"
          }
        }
      },
      "EmspUsersUserModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Stable user (driver) UUID. Use it in GET/PUT /users/{id}.",
            "format": "uuid",
            "example": "1ae38f39-2c4b-4d5e-9f10-3a4b5c6d7e8f"
          },
          "email": {
            "type": "string",
            "description": "User's email address (unique within a network).",
            "example": "maya@example.com"
          },
          "firstName": {
            "type": "string",
            "description": "User's first name.",
            "example": "Maya"
          },
          "lastName": {
            "type": "string",
            "description": "User's last name.",
            "example": "Rivera"
          },
          "phoneNumber": {
            "type": [
              "null",
              "string"
            ],
            "description": "User's phone number, or null.",
            "example": "+17875551234"
          },
          "address": {
            "type": [
              "null",
              "string"
            ],
            "description": "Street address, or null.",
            "example": "123 Calle Sol"
          },
          "city": {
            "type": [
              "null",
              "string"
            ],
            "description": "City, or null.",
            "example": "San Juan"
          },
          "state": {
            "type": [
              "null",
              "string"
            ],
            "description": "State/region, or null.",
            "example": "PR"
          },
          "postalCode": {
            "type": [
              "null",
              "string"
            ],
            "description": "Postal code, or null.",
            "example": "00901"
          },
          "country": {
            "type": [
              "null",
              "string"
            ],
            "description": "Country, or null.",
            "example": "US"
          },
          "createdAt": {
            "description": "UTC timestamp when the user was created.",
            "format": "date-time",
            "example": "2026-01-15T09:30:00Z"
          },
          "lastUpdated": {
            "description": "UTC timestamp the user was last updated, or null if never updated since creation.",
            "format": "date-time",
            "example": "2026-06-18T14:05:33Z"
          },
          "totalSessions": {
            "type": "integer",
            "description": "Number of charging sessions the user has across the key's accessible networks.",
            "format": "int32",
            "example": 27
          },
          "totalEnergyKwh": {
            "type": "number",
            "description": "Total energy delivered to the user across all sessions, in kWh.",
            "format": "double",
            "example": 412.5
          },
          "totalSpent": {
            "type": "number",
            "description": "Total amount the user has spent across all sessions, in the network currency.",
            "format": "double",
            "example": 186.4
          },
          "currency": {
            "type": "string",
            "description": "ISO-4217 currency code for totalSpent (from the primary network; defaults to USD).",
            "example": "USD"
          }
        }
      },
      "EmspUsersUserResponse": {
        "type": "object",
        "properties": {
          "data": {
            "description": "The user.",
            "$ref": "#/components/schemas/EmspUsersUserModel"
          },
          "success": {
            "type": "boolean",
            "description": "Always true on a 2xx response.",
            "example": true
          },
          "timestamp": {
            "description": "UTC time the response was generated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "EmspWebhooksCreated": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Stable webhook subscription UUID.",
            "format": "uuid",
            "example": "3a1b2c3d-4e5f-6a7b-8c9d-0e1f2a3b4c5d"
          },
          "url": {
            "type": "string",
            "description": "HTTPS endpoint events are delivered to.",
            "example": "https://example.com/hooks/phevnix"
          },
          "events": {
            "type": "string",
            "description": "Comma-separated subscribed event types, or '*'.",
            "example": "session.started,session.completed"
          },
          "description": {
            "type": "string",
            "description": "Operator-supplied description.",
            "example": "Billing pipeline hook"
          },
          "hmac_secret": {
            "type": "string",
            "description": "The HMAC signing secret for verifying delivery signatures. Shown ONLY at creation — store it securely; it cannot be retrieved later.",
            "example": "whsec_REDACTED_store_this_value_now"
          },
          "is_active": {
            "type": "boolean",
            "description": "Whether the subscription is active (true on creation).",
            "example": true
          },
          "created_at": {
            "description": "UTC time the subscription was created.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "EmspWebhooksCreatedResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/EmspWebhooksCreated"
          }
        }
      },
      "EmspWebhooksDeliveryDetail": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Stable delivery UUID.",
            "format": "uuid",
            "example": "6f5e4d3c-2b1a-0e9f-8d7c-6b5a4c3d2e1f"
          },
          "event_type": {
            "type": "string",
            "description": "The event type that triggered this delivery.",
            "example": "session.completed"
          },
          "payload": {
            "type": "string",
            "description": "The raw JSON payload (as a string) that was POSTed to the destination.",
            "example": "{\"event\":\"session.completed\",\"sessionId\":\"7c6f5e40-1a2b-3c4d-5e6f-7a8b9c0d1e2f\"}"
          },
          "http_status": {
            "type": [
              "null",
              "integer"
            ],
            "description": "HTTP status code returned by the destination, or null if no response.",
            "format": "int32",
            "example": 200
          },
          "response_body": {
            "type": [
              "null",
              "string"
            ],
            "description": "Response body returned by the destination (truncated), or null.",
            "example": "OK"
          },
          "success": {
            "type": "boolean",
            "description": "True when the delivery reached the Delivered terminal state.",
            "example": true
          },
          "status": {
            "type": "string",
            "description": "Delivery state (Pending, Delivered, Failed, …).",
            "example": "Delivered"
          },
          "attempts": {
            "type": "integer",
            "description": "Number of delivery attempts made so far.",
            "format": "int32",
            "example": 1
          },
          "max_attempts": {
            "type": "integer",
            "description": "Maximum number of delivery attempts before the delivery is abandoned.",
            "format": "int32",
            "example": 5
          },
          "duration_ms": {
            "type": [
              "null",
              "integer"
            ],
            "description": "How long the last delivery attempt took, in milliseconds, or null.",
            "format": "int32",
            "example": 142
          },
          "next_retry_at": {
            "description": "UTC time the next retry is scheduled for, or null if none pending.",
            "format": "date-time",
            "example": "2026-06-19T18:47:09Z"
          },
          "created_at": {
            "description": "UTC time the delivery was created.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          },
          "completed_at": {
            "description": "UTC time the delivery reached a terminal state, or null.",
            "format": "date-time",
            "example": "2026-06-19T18:42:11Z"
          }
        }
      },
      "EmspWebhooksDeliveryDetailResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/EmspWebhooksDeliveryDetail"
          }
        }
      },
      "EmspWebhooksDeliveryListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EmspWebhooksDeliverySummary"
            },
            "description": "The page of webhook deliveries, newest first."
          },
          "pagination": {
            "$ref": "#/components/schemas/EmspWebhooksPagination"
          }
        }
      },
      "EmspWebhooksDeliverySummary": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Stable delivery UUID. Use it in the /deliveries/{deliveryId} routes.",
            "format": "uuid",
            "example": "6f5e4d3c-2b1a-0e9f-8d7c-6b5a4c3d2e1f"
          },
          "event_type": {
            "type": "string",
            "description": "The event type that triggered this delivery.",
            "example": "session.completed"
          },
          "http_status": {
            "type": [
              "null",
              "integer"
            ],
            "description": "HTTP status code returned by the destination, or null if no response was received.",
            "format": "int32",
            "example": 200
          },
          "success": {
            "type": "boolean",
            "description": "True when the delivery reached the Delivered terminal state.",
            "example": true
          },
          "status": {
            "type": "string",
            "description": "Delivery state (Pending, Delivered, Failed, …).",
            "example": "Delivered"
          },
          "attempts": {
            "type": "integer",
            "description": "Number of delivery attempts made so far.",
            "format": "int32",
            "example": 1
          },
          "created_at": {
            "description": "UTC time the delivery was created (event enqueued).",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          },
          "completed_at": {
            "description": "UTC time the delivery reached a terminal state, or null if still pending.",
            "format": "date-time",
            "example": "2026-06-19T18:42:11Z"
          }
        }
      },
      "EmspWebhooksErrorResponse": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "description": "Stable machine-readable error slug (forbidden, unauthorized, invalid_url, invalid_events, not_found).",
            "example": "not_found"
          },
          "message": {
            "type": "string",
            "description": "Human-readable explanation of the error.",
            "example": "Webhook subscription not found"
          }
        }
      },
      "EmspWebhooksEventTypesResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "All event types a subscription may subscribe to."
          }
        }
      },
      "EmspWebhooksListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EmspWebhooksSubscription"
            },
            "description": "The operator's webhook subscriptions."
          }
        }
      },
      "EmspWebhooksPagination": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "description": "1-based page index of this result set.",
            "format": "int32",
            "example": 1
          },
          "page_size": {
            "type": "integer",
            "description": "Items requested per page (1–100; defaults to 20).",
            "format": "int32",
            "example": 20
          },
          "total_count": {
            "type": "integer",
            "description": "Total number of deliveries across all pages.",
            "format": "int32",
            "example": 57
          },
          "total_pages": {
            "type": "integer",
            "description": "Total number of pages at the current page_size.",
            "format": "int32",
            "example": 3
          }
        }
      },
      "EmspWebhooksRetryResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/EmspWebhooksRetryResult"
          }
        }
      },
      "EmspWebhooksRetryResult": {
        "type": "object",
        "properties": {
          "delivery_id": {
            "type": "string",
            "description": "The delivery UUID that was re-enqueued.",
            "format": "uuid",
            "example": "6f5e4d3c-2b1a-0e9f-8d7c-6b5a4c3d2e1f"
          },
          "retry_enqueued": {
            "type": "boolean",
            "description": "Always true — the delivery was queued for one immediate re-processing pass.",
            "example": true
          }
        }
      },
      "EmspWebhooksSubscription": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Stable webhook subscription UUID. Use it in the /webhooks/{webhookId} routes.",
            "format": "uuid",
            "example": "3a1b2c3d-4e5f-6a7b-8c9d-0e1f2a3b4c5d"
          },
          "url": {
            "type": "string",
            "description": "HTTPS endpoint events are delivered to (POST).",
            "example": "https://example.com/hooks/phevnix"
          },
          "events": {
            "type": "string",
            "description": "Comma-separated list of subscribed event types, or '*' for all events.",
            "example": "session.started,session.completed"
          },
          "description": {
            "type": "string",
            "description": "Operator-supplied description of the subscription.",
            "example": "Billing pipeline hook"
          },
          "is_active": {
            "type": "boolean",
            "description": "Whether the subscription is currently active and receiving deliveries.",
            "example": true
          },
          "consecutive_failures": {
            "type": "integer",
            "description": "Number of consecutive failed deliveries; the subscription auto-disables past a threshold.",
            "format": "int32",
            "example": 0
          },
          "disabled_at": {
            "description": "UTC time the subscription was auto-disabled after repeated failures, or null if active.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          },
          "disabled_reason": {
            "type": [
              "null",
              "string"
            ],
            "description": "Why the subscription was disabled, or null if active.",
            "example": "Too many consecutive delivery failures"
          },
          "created_at": {
            "description": "UTC time the subscription was created.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          },
          "updated_at": {
            "description": "UTC time the subscription was last updated.",
            "format": "date-time",
            "example": "2026-06-19T18:42:09Z"
          }
        }
      },
      "EmspWebhooksSubscriptionResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/EmspWebhooksSubscription"
          }
        }
      },
      "EmspWebhooksTestResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/EmspWebhooksTestResult"
          }
        }
      },
      "EmspWebhooksTestResult": {
        "type": "object",
        "properties": {
          "webhook_id": {
            "type": "string",
            "description": "The subscription UUID the test event was enqueued for.",
            "format": "uuid",
            "example": "3a1b2c3d-4e5f-6a7b-8c9d-0e1f2a3b4c5d"
          },
          "test_enqueued": {
            "type": "boolean",
            "description": "Always true — the test delivery was queued for the worker.",
            "example": true
          }
        }
      },
      "EndpointDto": {
        "type": "object",
        "properties": {
          "identifier": {
            "type": [
              "null",
              "string"
            ]
          },
          "role": {
            "type": [
              "null",
              "string"
            ]
          },
          "url": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "EnergyMixDto": {
        "type": "object",
        "properties": {
          "isGreenEnergy": {
            "type": "boolean"
          },
          "energySources": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/EnergySourceDto"
            }
          },
          "environmentalImpacts": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/EnvironmentalImpactDto"
            }
          },
          "supplierName": {
            "type": [
              "null",
              "string"
            ]
          },
          "energyProductName": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "EnergySourceDto": {
        "type": "object",
        "properties": {
          "source": {
            "type": [
              "null",
              "string"
            ]
          },
          "percentage": {
            "type": "number",
            "format": "double"
          }
        }
      },
      "EnterpriseLeadInput": {
        "required": [
          "networkUuid",
          "companyName",
          "email",
          "estimatedConnectors",
          "phone",
          "notes",
          "source"
        ],
        "type": "object",
        "properties": {
          "networkUuid": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "companyName": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "estimatedConnectors": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "phone": {
            "type": [
              "null",
              "string"
            ]
          },
          "notes": {
            "type": [
              "null",
              "string"
            ]
          },
          "source": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "EnvironmentalImpactDto": {
        "type": "object",
        "properties": {
          "category": {
            "type": [
              "null",
              "string"
            ]
          },
          "amount": {
            "type": "number",
            "format": "double"
          }
        }
      },
      "EVSEData": {
        "required": [
          "id",
          "connectorId"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "connectorId": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          }
        }
      },
      "EvseDto": {
        "type": "object",
        "properties": {
          "uid": {
            "type": [
              "null",
              "string"
            ]
          },
          "evse_id": {
            "type": [
              "null",
              "string"
            ]
          },
          "location_ocpi_id": {
            "type": [
              "null",
              "string"
            ]
          },
          "status": {
            "type": [
              "null",
              "string"
            ]
          },
          "status_schedule": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/StatusScheduleDto"
            }
          },
          "capabilities": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            }
          },
          "connectors": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/ConnectorDto"
            }
          },
          "floor_level": {
            "type": [
              "null",
              "string"
            ]
          },
          "coordinates": {
            "$ref": "#/components/schemas/GeoLocationDto"
          },
          "physical_reference": {
            "type": [
              "null",
              "string"
            ]
          },
          "directions": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/DisplayTextDto"
            }
          },
          "parking_restrictions": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/ParkingRestrictionDto"
            }
          },
          "images": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/ImageDto"
            }
          },
          "last_updated": {
            "format": "date-time"
          },
          "last_heartbeat": {
            "format": "date-time"
          }
        }
      },
      "EVSEInfo": {
        "required": [
          "id",
          "connectorId"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "connectorId": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "ExceptionalPeriodDto": {
        "type": "object",
        "properties": {
          "periodBegin": {
            "format": "date-time"
          },
          "periodEnd": {
            "format": "date-time"
          }
        }
      },
      "FacilityDto": {
        "type": "object",
        "properties": {
          "value": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "FavoriteRequest": {
        "type": "object",
        "properties": {
          "targetType": {
            "type": "string"
          },
          "targetId": {
            "type": "string",
            "format": "uuid"
          },
          "label": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "FetchDiagnosticsRequest": {
        "type": "object",
        "properties": {
          "startTime": {
            "type": [
              "null",
              "string"
            ]
          },
          "stopTime": {
            "type": [
              "null",
              "string"
            ]
          },
          "retries": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "retryInterval": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          }
        }
      },
      "GenerateInvoiceRequest": {
        "type": "object",
        "properties": {
          "transactionId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "transactionIds": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string",
              "format": "uuid"
            }
          }
        }
      },
      "GeoLocationDto": {
        "type": "object",
        "properties": {
          "latitude": {
            "type": [
              "null",
              "string"
            ]
          },
          "longitude": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "GetMonitoringReportRequest": {
        "type": "object",
        "properties": {
          "requestId": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "monitoringCriteria": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            }
          },
          "componentVariables": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "object"
            }
          }
        }
      },
      "GetVariableData": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "attributeType": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "component": {
            "$ref": "#/components/schemas/ComponentData"
          }
        }
      },
      "GetVariablesRequest": {
        "required": [
          "getVariableData"
        ],
        "type": "object",
        "properties": {
          "getVariableData": {
            "type": "array",
            "items": {
              "type": "object"
            }
          }
        }
      },
      "HoursDto": {
        "type": "object",
        "properties": {
          "twentyFourSeven": {
            "type": "boolean"
          },
          "regularHours": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/RegularHoursDto"
            }
          },
          "exceptionalOpenings": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/ExceptionalPeriodDto"
            }
          },
          "exceptionalClosings": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/ExceptionalPeriodDto"
            }
          }
        }
      },
      "IFormFile": {
        "type": "string",
        "format": "binary"
      },
      "ImageDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": [
              "null",
              "string"
            ]
          },
          "thumbnail": {
            "type": [
              "null",
              "string"
            ]
          },
          "category": {
            "type": [
              "null",
              "string"
            ]
          },
          "type": {
            "type": [
              "null",
              "string"
            ]
          },
          "width": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "height": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          }
        }
      },
      "IncreaseRequestBody": {
        "type": "object",
        "properties": {
          "resource": {
            "type": [
              "null",
              "string"
            ]
          },
          "requestedLimit": {
            "type": "integer",
            "format": "int32"
          },
          "reason": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "InstallCertificateRequest": {
        "required": [
          "certificateType",
          "certificate"
        ],
        "type": "object",
        "properties": {
          "certificateType": {
            "type": "string"
          },
          "certificate": {
            "type": "string"
          }
        }
      },
      "InstallIntegrationRequest": {
        "required": [
          "slug",
          "name"
        ],
        "type": "object",
        "properties": {
          "slug": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "stripePriceId": {
            "type": [
              "null",
              "string"
            ]
          },
          "monthlyPrice": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          }
        }
      },
      "InviteTeamMemberRequest": {
        "required": [
          "email",
          "name",
          "role"
        ],
        "type": "object",
        "properties": {
          "email": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "role": {
            "type": "string"
          }
        }
      },
      "JsonElement": { },
      "LocationDto": {
        "type": "object",
        "properties": {
          "countryCode": {
            "type": [
              "null",
              "string"
            ]
          },
          "partyId": {
            "type": [
              "null",
              "string"
            ]
          },
          "id": {
            "type": [
              "null",
              "string"
            ]
          },
          "publish": {
            "type": "boolean"
          },
          "publishAllowedTo": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/PublishTokenTypeDto"
            }
          },
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "address": {
            "type": [
              "null",
              "string"
            ]
          },
          "city": {
            "type": [
              "null",
              "string"
            ]
          },
          "postalCode": {
            "type": [
              "null",
              "string"
            ]
          },
          "state": {
            "type": [
              "null",
              "string"
            ]
          },
          "country": {
            "type": [
              "null",
              "string"
            ]
          },
          "coordinates": {
            "$ref": "#/components/schemas/GeoLocationDto"
          },
          "relatedLocations": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/AdditionalGeoLocationDto"
            }
          },
          "parkingType": {
            "$ref": "#/components/schemas/ParkingTypeDto"
          },
          "evses": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/EvseDto"
            }
          },
          "directions": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/DisplayTextDto"
            }
          },
          "operator": {
            "$ref": "#/components/schemas/BusinessDetailsDto"
          },
          "suboperator": {
            "$ref": "#/components/schemas/BusinessDetailsDto"
          },
          "owner": {
            "$ref": "#/components/schemas/BusinessDetailsDto"
          },
          "facilities": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/FacilityDto"
            }
          },
          "timeZone": {
            "type": [
              "null",
              "string"
            ]
          },
          "openingTimes": {
            "$ref": "#/components/schemas/HoursDto"
          },
          "chargingWhenClosed": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "images": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/ImageDto"
            }
          },
          "energyMix": {
            "$ref": "#/components/schemas/EnergyMixDto"
          },
          "lastUpdated": {
            "format": "date-time"
          }
        }
      },
      "LocationIssueReportRequest": {
        "type": "object",
        "properties": {
          "category": {
            "type": [
              "null",
              "string"
            ]
          },
          "note": {
            "type": [
              "null",
              "string"
            ]
          },
          "chargerId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          }
        }
      },
      "LocationNetworkInfo": {
        "type": "object",
        "properties": {
          "networkId": {
            "type": "integer",
            "format": "int32"
          },
          "networkUuid": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "logoUrl": {
            "type": [
              "null",
              "string"
            ]
          },
          "primaryColor": {
            "type": "string"
          },
          "secondaryColor": {
            "type": "string"
          },
          "country": {
            "type": [
              "null",
              "string"
            ]
          },
          "website": {
            "type": [
              "null",
              "string"
            ]
          },
          "supportEmail": {
            "type": [
              "null",
              "string"
            ]
          },
          "supportPhone": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "LocationReviewRequest": {
        "type": "object",
        "properties": {
          "rating": {
            "type": "integer",
            "format": "int32"
          },
          "comment": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "LogoDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": [
              "null",
              "string"
            ]
          },
          "thumbnail": {
            "type": [
              "null",
              "string"
            ]
          },
          "category": {
            "type": [
              "null",
              "string"
            ]
          },
          "type": {
            "type": [
              "null",
              "string"
            ]
          },
          "width": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "height": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          }
        }
      },
      "NotificationPreferencesRequest": {
        "type": "object",
        "properties": {
          "pushEnabled": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "emailEnabled": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "smsEnabled": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "notifySessionStarted": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "notifySessionStopped": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "notifySessionFailed": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "notifyReservationReminder": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "notifyPayment": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "email": {
            "type": [
              "null",
              "string"
            ]
          },
          "phoneNumber": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "OCPIError": {
        "type": "object",
        "properties": {
          "statusCode": {
            "type": "integer",
            "format": "int32"
          },
          "statusMessage": {
            "type": [
              "null",
              "string"
            ]
          },
          "timestamp": {
            "format": "date-time"
          }
        }
      },
      "OCPIPaginatedResponseOfSessionDto": {
        "type": "object",
        "properties": {
          "data": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/SessionDto"
            }
          },
          "status_code": {
            "type": "integer",
            "format": "int32"
          },
          "status_message": {
            "type": [
              "null",
              "string"
            ]
          },
          "timestamp": {
            "format": "date-time"
          },
          "totalCount": {
            "type": "integer",
            "format": "int32"
          },
          "offset": {
            "type": "integer",
            "format": "int32"
          },
          "limit": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "OCPIResponse": {
        "type": "object",
        "properties": {
          "status_code": {
            "type": "integer",
            "format": "int32"
          },
          "status_message": {
            "type": [
              "null",
              "string"
            ]
          },
          "timestamp": {
            "format": "date-time"
          }
        }
      },
      "OCPIResponseOfConnectorDto": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ConnectorDto"
          },
          "status_code": {
            "type": "integer",
            "format": "int32"
          },
          "status_message": {
            "type": [
              "null",
              "string"
            ]
          },
          "timestamp": {
            "format": "date-time"
          }
        }
      },
      "OCPIResponseOfCredentialsDto": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CredentialsDto"
          },
          "status_code": {
            "type": "integer",
            "format": "int32"
          },
          "status_message": {
            "type": [
              "null",
              "string"
            ]
          },
          "timestamp": {
            "format": "date-time"
          }
        }
      },
      "OCPIResponseOfEvseDto": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/EvseDto"
          },
          "status_code": {
            "type": "integer",
            "format": "int32"
          },
          "status_message": {
            "type": [
              "null",
              "string"
            ]
          },
          "timestamp": {
            "format": "date-time"
          }
        }
      },
      "OCPIResponseOfListOfLocationDto": {
        "type": "object",
        "properties": {
          "data": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/LocationDto"
            }
          },
          "status_code": {
            "type": "integer",
            "format": "int32"
          },
          "status_message": {
            "type": [
              "null",
              "string"
            ]
          },
          "timestamp": {
            "format": "date-time"
          }
        }
      },
      "OCPIResponseOfListOfVersionDto": {
        "type": "object",
        "properties": {
          "data": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/VersionDto"
            }
          },
          "status_code": {
            "type": "integer",
            "format": "int32"
          },
          "status_message": {
            "type": [
              "null",
              "string"
            ]
          },
          "timestamp": {
            "format": "date-time"
          }
        }
      },
      "OCPIResponseOfLocationDto": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/LocationDto"
          },
          "status_code": {
            "type": "integer",
            "format": "int32"
          },
          "status_message": {
            "type": [
              "null",
              "string"
            ]
          },
          "timestamp": {
            "format": "date-time"
          }
        }
      },
      "OCPIResponseOfSessionDto": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/SessionDto"
          },
          "status_code": {
            "type": "integer",
            "format": "int32"
          },
          "status_message": {
            "type": [
              "null",
              "string"
            ]
          },
          "timestamp": {
            "format": "date-time"
          }
        }
      },
      "OCPIResponseOfVersionDetailsDto": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/VersionDetailsDto"
          },
          "status_code": {
            "type": "integer",
            "format": "int32"
          },
          "status_message": {
            "type": [
              "null",
              "string"
            ]
          },
          "timestamp": {
            "format": "date-time"
          }
        }
      },
      "OcppCommandResponse": {
        "type": "object",
        "properties": {
          "isSuccess": {
            "type": "boolean"
          },
          "errorCode": {
            "type": [
              "null",
              "string"
            ]
          },
          "errorDescription": {
            "type": [
              "null",
              "string"
            ]
          },
          "retryable": {
            "type": "boolean"
          },
          "payloadJson": {
            "type": [
              "null",
              "string"
            ]
          },
          "messageId": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "ParkingRestrictionDto": {
        "type": "object",
        "properties": {
          "value": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "ParkingTypeDto": {
        "type": "object",
        "properties": {
          "value": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "PaymentCapturedPrivateRequest": {
        "type": "object",
        "properties": {
          "paymentIntentId": {
            "type": [
              "null",
              "string"
            ]
          },
          "amountCents": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "paymentMethod": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "PlanCheckoutRequest": {
        "required": [
          "planCode"
        ],
        "type": "object",
        "properties": {
          "planCode": {
            "type": "string"
          },
          "successUrl": {
            "type": [
              "null",
              "string"
            ]
          },
          "cancelUrl": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "PriceDto": {
        "type": "object",
        "properties": {
          "excl_vat": {
            "type": "number",
            "format": "double"
          },
          "incl_vat": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          }
        }
      },
      "PricingCalculationDto": {
        "type": "object",
        "properties": {
          "energyCost": {
            "type": "number",
            "format": "double"
          },
          "timeCost": {
            "type": "number",
            "format": "double"
          },
          "sessionFee": {
            "type": "number",
            "format": "double"
          },
          "idleFee": {
            "type": "number",
            "format": "double"
          },
          "subtotal": {
            "type": "number",
            "format": "double"
          },
          "tax": {
            "type": "number",
            "format": "double"
          },
          "total": {
            "type": "number",
            "format": "double"
          },
          "currency": {
            "type": "string"
          },
          "tariffName": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "PricingCalculationRequest": {
        "required": [
          "energyKwh"
        ],
        "type": "object",
        "properties": {
          "tariffId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "chargerId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "connectorId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "energyKwh": {
            "type": "number",
            "format": "double"
          },
          "durationMinutes": {
            "type": "number",
            "format": "double"
          },
          "idleMinutes": {
            "type": "number",
            "format": "double"
          }
        }
      },
      "ProblemDetails": {
        "type": "object",
        "properties": {
          "type": {
            "type": [
              "null",
              "string"
            ]
          },
          "title": {
            "type": [
              "null",
              "string"
            ]
          },
          "status": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "detail": {
            "type": [
              "null",
              "string"
            ]
          },
          "instance": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "ProvisionControlPlaneRequest": {
        "required": [
          "connectionSecretRef"
        ],
        "type": "object",
        "properties": {
          "connectionSecretRef": {
            "type": "string"
          }
        }
      },
      "ProvisionSiloRequest": {
        "required": [
          "connectionSecretRef"
        ],
        "type": "object",
        "properties": {
          "connectionSecretRef": {
            "type": "string"
          },
          "migrateData": {
            "type": "boolean"
          }
        }
      },
      "PublicApiCostBreakdownDto": {
        "type": "object",
        "properties": {
          "energyCost": {
            "type": "number",
            "format": "double"
          },
          "timeCost": {
            "type": "number",
            "format": "double"
          },
          "sessionFee": {
            "type": "number",
            "format": "double"
          },
          "idleFee": {
            "type": "number",
            "format": "double"
          },
          "subtotal": {
            "type": "number",
            "format": "double"
          },
          "tax": {
            "type": "number",
            "format": "double"
          },
          "total": {
            "type": "number",
            "format": "double"
          }
        }
      },
      "PublicApiErrorResponse": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "code": {
            "type": [
              "null",
              "string"
            ]
          },
          "timestamp": {
            "format": "date-time"
          },
          "details": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        }
      },
      "PublicApiInvoiceDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "invoiceNumber": {
            "type": "string"
          },
          "issueDate": {
            "format": "date-time"
          },
          "dueDate": {
            "format": "date-time"
          },
          "userId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "userName": {
            "type": [
              "null",
              "string"
            ]
          },
          "userEmail": {
            "type": [
              "null",
              "string"
            ]
          },
          "lineItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicApiInvoiceLineItemDto"
            }
          },
          "subtotal": {
            "type": "number",
            "format": "double"
          },
          "tax": {
            "type": "number",
            "format": "double"
          },
          "total": {
            "type": "number",
            "format": "double"
          },
          "currency": {
            "type": "string"
          },
          "status": {
            "type": "string"
          }
        }
      },
      "PublicApiInvoiceLineItemDto": {
        "type": "object",
        "properties": {
          "transactionId": {
            "type": "string",
            "format": "uuid"
          },
          "sessionDate": {
            "format": "date-time"
          },
          "locationName": {
            "type": [
              "null",
              "string"
            ]
          },
          "energyKwh": {
            "type": "number",
            "format": "double"
          },
          "amount": {
            "type": "number",
            "format": "double"
          }
        }
      },
      "PublicApiInvoiceSummaryDto": {
        "type": "object",
        "properties": {
          "invoiceNumber": {
            "type": "string"
          },
          "issueDate": {
            "format": "date-time"
          },
          "transactionCount": {
            "type": "integer",
            "format": "int32"
          },
          "total": {
            "type": "number",
            "format": "double"
          },
          "currency": {
            "type": "string"
          }
        }
      },
      "PublicApiMeterValueDto": {
        "type": "object",
        "properties": {
          "timestamp": {
            "description": "UTC time the charger captured this sample.",
            "format": "date-time",
            "example": "2026-06-19T18:21:30Z"
          },
          "meterValue": {
            "type": "number",
            "description": "Cumulative active-energy register at this sample (the raw OCPP Energy.Active.Import.Register value, kWh). Subtract consecutive readings for interval consumption.",
            "format": "double",
            "example": 14.382
          },
          "powerKw": {
            "type": [
              "null",
              "number"
            ],
            "description": "Instantaneous active power draw at this sample, in kW.",
            "format": "double",
            "example": 7.2
          },
          "energyWh": {
            "type": [
              "null",
              "number"
            ],
            "description": "Interval energy delivered since the previous sample, in Wh (when the charger reports it).",
            "format": "double",
            "example": 120
          },
          "currentA": {
            "type": [
              "null",
              "number"
            ],
            "description": "Phase L1 current, in amperes.",
            "format": "double",
            "example": 31.5
          },
          "currentB": {
            "type": [
              "null",
              "number"
            ],
            "description": "Phase L2 current, in amperes (3-phase chargers only).",
            "format": "double"
          },
          "currentC": {
            "type": [
              "null",
              "number"
            ],
            "description": "Phase L3 current, in amperes (3-phase chargers only).",
            "format": "double"
          },
          "voltageA": {
            "type": [
              "null",
              "number"
            ],
            "description": "Phase L1 voltage, in volts.",
            "format": "double",
            "example": 230.1
          },
          "voltageB": {
            "type": [
              "null",
              "number"
            ],
            "description": "Phase L2 voltage, in volts (3-phase chargers only).",
            "format": "double"
          },
          "voltageC": {
            "type": [
              "null",
              "number"
            ],
            "description": "Phase L3 voltage, in volts (3-phase chargers only).",
            "format": "double"
          },
          "stateOfCharge": {
            "type": [
              "null",
              "integer"
            ],
            "description": "Vehicle battery state of charge at this sample, 0–100 (when the EV reports it over OCPP).",
            "format": "int32",
            "example": 64
          },
          "temperature": {
            "type": [
              "null",
              "number"
            ],
            "description": "Connector/charger temperature at this sample, in °C (when reported).",
            "format": "double"
          }
        }
      },
      "PublicApiSessionDetailDto": {
        "type": "object",
        "properties": {
          "authMethod": {
            "type": "string"
          },
          "idTag": {
            "type": [
              "null",
              "string"
            ]
          },
          "startMeterValue": {
            "type": "number",
            "format": "double"
          },
          "endMeterValue": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "currentMeterValue": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "startReason": {
            "type": [
              "null",
              "string"
            ]
          },
          "stopReason": {
            "type": [
              "null",
              "string"
            ]
          },
          "idleTimeSeconds": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "isInIdleState": {
            "type": "boolean"
          },
          "paymentStatus": {
            "type": [
              "null",
              "string"
            ]
          },
          "costs": {
            "$ref": "#/components/schemas/SessionCostBreakdownDto"
          },
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "status": {
            "type": "string"
          },
          "chargerId": {
            "type": "string",
            "format": "uuid"
          },
          "chargerUid": {
            "type": [
              "null",
              "string"
            ]
          },
          "connectorId": {
            "type": "string",
            "format": "uuid"
          },
          "connectorNumber": {
            "type": "integer",
            "format": "int32"
          },
          "locationId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "locationName": {
            "type": [
              "null",
              "string"
            ]
          },
          "startTime": {
            "format": "date-time"
          },
          "endTime": {
            "format": "date-time"
          },
          "durationSeconds": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "energyDeliveredKwh": {
            "type": "number",
            "format": "double"
          },
          "total": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "currency": {
            "type": "string"
          },
          "maxPowerKw": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "currentPowerKw": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "currentSocPercent": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          }
        }
      },
      "PublicApiSessionDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "status": {
            "type": "string"
          },
          "chargerId": {
            "type": "string",
            "format": "uuid"
          },
          "chargerUid": {
            "type": [
              "null",
              "string"
            ]
          },
          "connectorId": {
            "type": "string",
            "format": "uuid"
          },
          "connectorNumber": {
            "type": "integer",
            "format": "int32"
          },
          "locationId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "locationName": {
            "type": [
              "null",
              "string"
            ]
          },
          "startTime": {
            "format": "date-time"
          },
          "endTime": {
            "format": "date-time"
          },
          "durationSeconds": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "energyDeliveredKwh": {
            "type": "number",
            "format": "double"
          },
          "total": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "currency": {
            "type": "string"
          },
          "maxPowerKw": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "currentPowerKw": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "currentSocPercent": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          }
        }
      },
      "PublicApiTransactionDetailDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "ocpiId": {
            "type": [
              "null",
              "string"
            ]
          },
          "sessionId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "userId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "startTime": {
            "format": "date-time"
          },
          "endTime": {
            "format": "date-time"
          },
          "totalEnergyKwh": {
            "type": "number",
            "format": "double"
          },
          "totalTimeMinutes": {
            "type": "number",
            "format": "double"
          },
          "currency": {
            "type": "string"
          },
          "paymentStatus": {
            "type": [
              "null",
              "string"
            ]
          },
          "locationId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "locationName": {
            "type": [
              "null",
              "string"
            ]
          },
          "locationAddress": {
            "type": [
              "null",
              "string"
            ]
          },
          "chargerUid": {
            "type": [
              "null",
              "string"
            ]
          },
          "connectorNumber": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "costBreakdown": {
            "$ref": "#/components/schemas/PublicApiCostBreakdownDto"
          }
        }
      },
      "PublicApiTransactionDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "ocpiId": {
            "type": [
              "null",
              "string"
            ]
          },
          "sessionId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "userId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "startTime": {
            "format": "date-time"
          },
          "endTime": {
            "format": "date-time"
          },
          "totalEnergyKwh": {
            "type": "number",
            "format": "double"
          },
          "amount": {
            "type": "number",
            "format": "double"
          },
          "currency": {
            "type": "string"
          },
          "paymentStatus": {
            "type": [
              "null",
              "string"
            ]
          },
          "locationName": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "PublicNetworkInfo": {
        "type": "object",
        "properties": {
          "networkId": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string"
          },
          "logoUrl": {
            "type": "string"
          },
          "primaryColor": {
            "type": "string"
          },
          "secondaryColor": {
            "type": "string"
          },
          "country": {
            "type": "string"
          },
          "website": {
            "type": "string"
          },
          "partyId": {
            "type": "string"
          },
          "supportEmail": {
            "type": "string"
          },
          "supportPhone": {
            "type": "string"
          }
        }
      },
      "PublishTokenTypeDto": {
        "type": "object",
        "properties": {
          "uid": {
            "type": [
              "null",
              "string"
            ]
          },
          "type": {
            "type": [
              "null",
              "string"
            ]
          },
          "visualNumber": {
            "type": [
              "null",
              "string"
            ]
          },
          "issuer": {
            "type": [
              "null",
              "string"
            ]
          },
          "groupId": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "PushKeys": {
        "type": "object",
        "properties": {
          "p256dh": {
            "type": [
              "null",
              "string"
            ]
          },
          "auth": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "PushSubscribeRequest": {
        "type": "object",
        "properties": {
          "endpoint": {
            "type": [
              "null",
              "string"
            ]
          },
          "keys": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/PushKeys"
              }
            ]
          }
        }
      },
      "PushUnsubscribeRequest": {
        "type": "object",
        "properties": {
          "endpoint": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "QueryChargingProfilesRequest": {
        "type": "object",
        "properties": {
          "evseId": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "chargingProfilePurpose": {
            "type": [
              "null",
              "string"
            ]
          },
          "stackLevel": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          }
        }
      },
      "RebootChargerRequest": {
        "type": "object",
        "properties": {
          "resetType": {
            "type": "string"
          }
        }
      },
      "RefundSessionPrivateRequest": {
        "type": "object",
        "properties": {
          "amount": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "reason": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "RegularHoursDto": {
        "type": "object",
        "properties": {
          "weekday": {
            "type": "integer",
            "format": "int32"
          },
          "periodBegin": {
            "type": [
              "null",
              "string"
            ]
          },
          "periodEnd": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "RemoteStartRequest": {
        "required": [
          "idTag",
          "connectorId"
        ],
        "type": "object",
        "properties": {
          "idTag": {
            "type": "string"
          },
          "connectorId": {
            "type": "integer",
            "format": "int32"
          },
          "sessionId": {
            "type": [
              "null",
              "string"
            ]
          },
          "authorizationReference": {
            "type": [
              "null",
              "string"
            ]
          },
          "driverEmail": {
            "type": [
              "null",
              "string"
            ]
          },
          "authorizationAmount": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          }
        }
      },
      "RemoteStopRequest": {
        "required": [
          "transactionId"
        ],
        "type": "object",
        "properties": {
          "transactionId": {
            "type": "string"
          }
        }
      },
      "RemoveStationRequest": {
        "type": "object",
        "properties": {
          "tenantId": {
            "type": "string"
          },
          "stationId": {
            "type": "string"
          },
          "softDelete": {
            "type": "boolean"
          },
          "reason": {
            "type": "string"
          }
        }
      },
      "Request": {
        "required": [
          "stationId",
          "evseInfo"
        ],
        "type": "object",
        "properties": {
          "stationId": {
            "type": "string"
          },
          "evseInfo": {
            "$ref": "#/components/schemas/EVSEInfo"
          }
        }
      },
      "ReservationResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Stable reservation UUID. Use it in GET/DELETE /reservations/{id}.",
            "format": "uuid",
            "example": "a3f9c812-6e7b-4d1a-9f0c-2b3e4d5f6a70"
          },
          "chargerId": {
            "type": "string",
            "description": "UUID of the charger holding the reservation.",
            "format": "uuid",
            "example": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b"
          },
          "chargerName": {
            "type": [
              "null",
              "string"
            ],
            "description": "Display name of the charger (serial number, falling back to the OCPP UID). Null if the charger could not be resolved.",
            "example": "CP-IslaVerde-01"
          },
          "connectorNumber": {
            "type": "integer",
            "description": "Connector number on the charger (1-based) that is reserved.",
            "format": "int32",
            "example": 1
          },
          "status": {
            "type": "string",
            "description": "Reservation lifecycle state: Pending, Accepted (held by the charger), Rejected, Cancelled, or Expired.",
            "example": "Accepted"
          },
          "statusReason": {
            "type": [
              "null",
              "string"
            ],
            "description": "Why the reservation reached its current status (e.g. the charger's rejection reason). Null on a clean Accepted.",
            "example": "Rejected by charger"
          },
          "idTag": {
            "type": "string",
            "description": "Authorization id-tag the reservation is bound to — only this token may start the held session.",
            "example": "DRV-7F3A91C2"
          },
          "expiryDate": {
            "description": "UTC time the hold expires; the connector is released automatically afterwards.",
            "format": "date-time",
            "example": "2026-06-19T19:00:00Z"
          },
          "createdAt": {
            "description": "UTC time the reservation was created.",
            "format": "date-time",
            "example": "2026-06-19T18:45:00Z"
          },
          "cancelledAt": {
            "description": "UTC time the reservation was cancelled, or null if it was never cancelled.",
            "format": "date-time",
            "example": "2026-06-19T18:52:00Z"
          }
        }
      },
      "ReserveRequest": {
        "type": "object",
        "properties": {
          "chargerId": {
            "type": "string",
            "format": "uuid"
          },
          "connectorNumber": {
            "type": "integer",
            "format": "int32"
          },
          "idTag": {
            "type": "string"
          },
          "expiryMinutes": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          }
        }
      },
      "ResetRequest": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string"
          }
        }
      },
      "ResolveAlertRequest": {
        "required": [
          "resolutionNotes"
        ],
        "type": "object",
        "properties": {
          "resolutionNotes": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "ResolveUserRequest": {
        "required": [
          "identityProviderId",
          "email",
          "firstName",
          "lastName"
        ],
        "type": "object",
        "properties": {
          "identityProviderId": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "firstName": {
            "type": [
              "null",
              "string"
            ]
          },
          "lastName": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "ReviewBody": {
        "type": "object",
        "properties": {
          "reviewNote": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "RevokeApiKeyRequest": {
        "required": [
          "reason"
        ],
        "type": "object",
        "properties": {
          "reason": {
            "type": "string"
          }
        }
      },
      "RevokeCertificateRequest": {
        "required": [
          "reason"
        ],
        "type": "object",
        "properties": {
          "reason": {
            "type": "string"
          }
        }
      },
      "RevokeInternalApiKeyRequest": {
        "required": [
          "reason"
        ],
        "type": "object",
        "properties": {
          "reason": {
            "type": "string"
          }
        }
      },
      "ScheduleChargeRequest": {
        "type": "object",
        "properties": {
          "chargerId": {
            "type": "string",
            "format": "uuid"
          },
          "connectorNumber": {
            "type": "integer",
            "format": "int32"
          },
          "idTag": {
            "type": "string"
          },
          "scheduledTime": {
            "format": "date-time"
          }
        }
      },
      "ScheduleDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "strategy": {
            "type": [
              "null",
              "string"
            ]
          },
          "powerLimitKw": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "startTime": {
            "type": [
              "null",
              "string"
            ]
          },
          "endTime": {
            "type": [
              "null",
              "string"
            ]
          },
          "daysOfWeek": {
            "type": [
              "null",
              "string"
            ]
          },
          "isActive": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "delete": {
            "type": "boolean"
          }
        }
      },
      "SessionCostBreakdownDto": {
        "type": "object",
        "properties": {
          "subtotal": {
            "type": "number",
            "format": "double"
          },
          "taxes": {
            "type": "number",
            "format": "double"
          },
          "sessionFees": {
            "type": "number",
            "format": "double"
          },
          "idleFees": {
            "type": "number",
            "format": "double"
          },
          "timeFees": {
            "type": "number",
            "format": "double"
          },
          "total": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "currency": {
            "type": "string"
          }
        }
      },
      "SessionDto": {
        "type": "object",
        "properties": {
          "country_code": {
            "type": [
              "null",
              "string"
            ]
          },
          "party_id": {
            "type": [
              "null",
              "string"
            ]
          },
          "id": {
            "type": [
              "null",
              "string"
            ]
          },
          "start_date_time": {
            "format": "date-time"
          },
          "end_date_time": {
            "format": "date-time"
          },
          "kwh": {
            "type": "number",
            "format": "double"
          },
          "cdr_token": {
            "$ref": "#/components/schemas/CdrTokenDto"
          },
          "auth_method": {
            "$ref": "#/components/schemas/AuthMethod"
          },
          "authorization_reference": {
            "type": [
              "null",
              "string"
            ]
          },
          "location_id": {
            "type": [
              "null",
              "string"
            ]
          },
          "evse_uid": {
            "type": [
              "null",
              "string"
            ]
          },
          "connector_id": {
            "type": [
              "null",
              "string"
            ]
          },
          "meter_id": {
            "type": [
              "null",
              "string"
            ]
          },
          "currency": {
            "type": [
              "null",
              "string"
            ]
          },
          "charging_periods": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/ChargingPeriodDto"
            }
          },
          "total_cost": {
            "$ref": "#/components/schemas/PriceDto"
          },
          "total_time": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "total_parking_time": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "status": {
            "$ref": "#/components/schemas/SessionStatus"
          },
          "max_cost": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "max_duration": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "max_power": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "current_power": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "idle_fees": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "is_in_idle_state": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "idle_start_time_utc": {
            "format": "date-time"
          },
          "grace_period_end_time_utc": {
            "format": "date-time"
          },
          "grace_period_minutes": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "idle_rate_per_minute": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "charging_ended_at": {
            "format": "date-time"
          },
          "last_updated": {
            "format": "date-time"
          }
        }
      },
      "SessionStatus": {
        "enum": [
          "ACTIVE",
          "COMPLETED",
          "INVALID",
          "PENDING",
          "RESERVATION"
        ]
      },
      "SessionUpdateDto": {
        "type": "object",
        "properties": {
          "kWh": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "endDateTime": {
            "format": "date-time"
          },
          "authMethod": {
            "type": [
              "null",
              "string"
            ]
          },
          "authorizationReference": {
            "type": [
              "null",
              "string"
            ]
          },
          "meterId": {
            "type": [
              "null",
              "string"
            ]
          },
          "currency": {
            "type": [
              "null",
              "string"
            ]
          },
          "status": {
            "type": [
              "null",
              "string"
            ]
          },
          "lastUpdated": {
            "format": "date-time"
          }
        }
      },
      "SetChargingProfileDto": {
        "type": "object",
        "properties": {
          "charging_profile": {
            "$ref": "#/components/schemas/ChargingProfileDto"
          },
          "response_url": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "SetDisplayMessageRequest": {
        "required": [
          "message"
        ],
        "type": "object",
        "properties": {
          "message": {
            "type": [
              "null",
              "object"
            ]
          }
        }
      },
      "SetLimitsBody": {
        "type": "object",
        "properties": {
          "maxChargers": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "maxConnectors": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          }
        }
      },
      "SetMonitoringBaseRequest": {
        "required": [
          "monitoringBase"
        ],
        "type": "object",
        "properties": {
          "monitoringBase": {
            "type": "string"
          }
        }
      },
      "SetMonitoringLevelRequest": {
        "required": [
          "severity"
        ],
        "type": "object",
        "properties": {
          "severity": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "SetVariableMonitoringRequest": {
        "required": [
          "setMonitoringData"
        ],
        "type": "object",
        "properties": {
          "setMonitoringData": {
            "type": "array",
            "items": {
              "type": "object"
            }
          }
        }
      },
      "SetVariablesRequest": {
        "required": [
          "setVariableData"
        ],
        "type": "object",
        "properties": {
          "setVariableData": {
            "type": "array",
            "items": {
              "type": "object"
            }
          }
        }
      },
      "SmartChargingLimitRequest": {
        "type": "object",
        "properties": {
          "connectorNumber": {
            "type": "integer",
            "format": "int32"
          },
          "unit": {
            "type": "string"
          },
          "limit": {
            "type": "number",
            "format": "double"
          }
        }
      },
      "StartFreeSessionPrivateRequest": {
        "type": "object",
        "properties": {
          "evseId": {
            "type": [
              "null",
              "string"
            ]
          },
          "chargerUid": {
            "type": [
              "null",
              "string"
            ]
          },
          "chargerUuid": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "connectorId": {
            "type": "integer",
            "format": "int32"
          },
          "driverEmail": {
            "type": [
              "null",
              "string"
            ]
          },
          "driverPhone": {
            "type": [
              "null",
              "string"
            ]
          },
          "driverUuid": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "maxDurationMinutes": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "authorizationReference": {
            "type": [
              "null",
              "string"
            ]
          },
          "authorizationAmount": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "startMethod": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "StartSessionRequest": {
        "required": [
          "chargerId",
          "connectorNumber",
          "idTag"
        ],
        "type": "object",
        "properties": {
          "chargerId": {
            "type": "string",
            "format": "uuid"
          },
          "connectorNumber": {
            "type": "integer",
            "format": "int32"
          },
          "idTag": {
            "maxLength": 36,
            "minLength": 1,
            "type": "string"
          }
        }
      },
      "StartSessionResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "sessionId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "correlationId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "status": {
            "type": "string"
          },
          "chargerId": {
            "type": "string",
            "format": "uuid"
          },
          "connectorNumber": {
            "type": "integer",
            "format": "int32"
          },
          "startTime": {
            "format": "date-time"
          },
          "message": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "StatusScheduleDto": {
        "type": "object",
        "properties": {
          "periodBegin": {
            "format": "date-time"
          },
          "periodEnd": {
            "format": "date-time"
          },
          "status": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "StopSessionRequest": {
        "required": [
          "sessionId"
        ],
        "type": "object",
        "properties": {
          "sessionId": {
            "type": "string",
            "format": "uuid"
          }
        }
      },
      "StripeConnectOnboardingRequest": {
        "required": [
          "returnUrl",
          "refreshUrl"
        ],
        "type": "object",
        "properties": {
          "returnUrl": {
            "type": "string"
          },
          "refreshUrl": {
            "type": "string"
          }
        }
      },
      "SyncCredentialsRequest": {
        "required": [
          "password",
          "securityProfile",
          "certificateThumbprint",
          "clearCertificateThumbprint"
        ],
        "type": "object",
        "properties": {
          "password": {
            "type": [
              "null",
              "string"
            ]
          },
          "securityProfile": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "certificateThumbprint": {
            "type": [
              "null",
              "string"
            ]
          },
          "clearCertificateThumbprint": {
            "type": [
              "null",
              "boolean"
            ]
          }
        }
      },
      "TokenType": {
        "enum": [
          "AD_HOC_USER",
          "APP_USER",
          "OTHER",
          "RFID"
        ]
      },
      "TriggerRequest": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string"
          },
          "connectorNumber": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          }
        }
      },
      "UnlockRequest": {
        "type": "object",
        "properties": {
          "connectorNumber": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "UpdateAlertChannelRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "configuration": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "UpdateAlertRuleRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "triggerEventTypes": {
            "type": [
              "null",
              "string"
            ]
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "severityFilter": {
            "type": [
              "null",
              "string"
            ]
          },
          "cooldownSeconds": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "channelIds": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "integer",
              "format": "int32"
            }
          }
        }
      },
      "UpdateApiKeyRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "permissions": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            }
          },
          "rateLimitPerHour": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "allowedIPs": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            }
          }
        }
      },
      "UpdateBrandingRequest": {
        "type": "object",
        "properties": {
          "primaryColor": {
            "type": [
              "null",
              "string"
            ]
          },
          "secondaryColor": {
            "type": [
              "null",
              "string"
            ]
          },
          "logoBackground": {
            "type": [
              "null",
              "string"
            ]
          },
          "customDomain": {
            "type": [
              "null",
              "string"
            ]
          },
          "emailSenderName": {
            "type": [
              "null",
              "string"
            ]
          },
          "termsUrl": {
            "type": [
              "null",
              "string"
            ]
          },
          "privacyUrl": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "UpdateCapabilitiesBody": {
        "type": "object",
        "properties": {
          "modules": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": [
                "null",
                "boolean"
              ]
            }
          },
          "capabilities": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": [
                "null",
                "boolean"
              ]
            }
          },
          "paymentMode": {
            "type": [
              "null",
              "string"
            ]
          },
          "platformFeePercent": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          }
        }
      },
      "UpdateCpmsConnectorRequest": {
        "type": "object",
        "properties": {
          "standard": {
            "type": [
              "null",
              "string"
            ]
          },
          "format": {
            "type": [
              "null",
              "string"
            ]
          },
          "powerType": {
            "type": [
              "null",
              "string"
            ]
          },
          "maxVoltage": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "maxAmperage": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "maxPower": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "status": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "UpdateDriverRequest": {
        "type": "object",
        "properties": {
          "firstName": {
            "type": [
              "null",
              "string"
            ]
          },
          "lastName": {
            "type": [
              "null",
              "string"
            ]
          },
          "phoneNumber": {
            "type": [
              "null",
              "string"
            ]
          },
          "email": {
            "type": [
              "null",
              "string"
            ]
          },
          "address": {
            "type": [
              "null",
              "string"
            ]
          },
          "city": {
            "type": [
              "null",
              "string"
            ]
          },
          "state": {
            "type": [
              "null",
              "string"
            ]
          },
          "postalCode": {
            "type": [
              "null",
              "string"
            ]
          },
          "country": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "UpdateGatewayRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "locationId": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "offlineAuthPolicy": {
            "type": [
              "null",
              "string"
            ]
          },
          "serialNumber": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "UpdateInternalApiKeyRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "permissions": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            }
          },
          "rateLimitPerHour": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "allowedIPs": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            }
          }
        }
      },
      "UpdateLoadBalancingRequest": {
        "type": "object",
        "properties": {
          "strategy": {
            "type": [
              "null",
              "string"
            ]
          },
          "enabled": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "siteMaxPowerKw": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "safetyMarginPct": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "priorities": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "integer",
              "format": "int32"
            }
          },
          "schedules": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/ScheduleDto"
            }
          }
        }
      },
      "UpdateNetworkSettingsRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "timeZone": {
            "type": [
              "null",
              "string"
            ]
          },
          "currency": {
            "type": [
              "null",
              "string"
            ]
          },
          "country": {
            "type": [
              "null",
              "string"
            ]
          },
          "primaryColor": {
            "type": [
              "null",
              "string"
            ]
          },
          "secondaryColor": {
            "type": [
              "null",
              "string"
            ]
          },
          "contactEmail": {
            "type": [
              "null",
              "string"
            ]
          },
          "contactPhone": {
            "type": [
              "null",
              "string"
            ]
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "website": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "UpdateOcpiSettingsRequest": {
        "required": [
          "enabled"
        ],
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean"
          },
          "partyId": {
            "type": [
              "null",
              "string"
            ]
          },
          "countryCode": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "UpdateOcppConfigRequest": {
        "type": "object",
        "properties": {
          "settings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UpdateOcppConfigSettingRequest"
            }
          }
        }
      },
      "UpdateOcppConfigSettingRequest": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "value": {
            "type": "string"
          }
        }
      },
      "UpdatePaymentConfigRequest": {
        "type": "object",
        "properties": {
          "paymentMode": {
            "type": [
              "null",
              "string"
            ]
          },
          "isEnabled": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "currency": {
            "type": [
              "null",
              "string"
            ]
          },
          "preAuthorizationAmount": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "minimumAmount": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "maximumAmount": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "autoCapture": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "paymentMethods": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            }
          }
        }
      },
      "UpdatePayoutScheduleBody": {
        "required": [
          "interval",
          "weeklyAnchor",
          "monthlyAnchor"
        ],
        "type": "object",
        "properties": {
          "interval": {
            "type": "string"
          },
          "weeklyAnchor": {
            "type": [
              "null",
              "string"
            ]
          },
          "monthlyAnchor": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          }
        }
      },
      "UpdatePlatformAlertChannelRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "configuration": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "UpdatePlatformAlertRuleRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "triggerEventTypes": {
            "type": [
              "null",
              "string"
            ]
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "severityFilter": {
            "type": [
              "null",
              "string"
            ]
          },
          "cooldownSeconds": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "channelIds": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "integer",
              "format": "int32"
            }
          }
        }
      },
      "UpdatePricesRequest": {
        "type": "object",
        "properties": {
          "energyRate": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "timeRate": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "sessionFee": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "idleRate": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "idleGracePeriodMinutes": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          }
        }
      },
      "UpdateStationRequest": {
        "type": "object",
        "properties": {
          "tenantId": {
            "type": "string"
          },
          "stationId": {
            "type": "string"
          },
          "serialNumber": {
            "type": "string"
          },
          "model": {
            "type": "string"
          },
          "vendor": {
            "type": "string"
          },
          "firmwareVersion": {
            "type": [
              "null",
              "string"
            ]
          },
          "ipAddress": {
            "type": [
              "null",
              "string"
            ]
          },
          "ocppVersion": {
            "type": [
              "null",
              "string"
            ]
          },
          "securityProfile": {
            "type": "integer",
            "format": "int32"
          },
          "basicAuthCredentials": {
            "type": [
              "null",
              "string"
            ]
          },
          "connectorIds": {
            "type": [
              "null",
              "string"
            ]
          },
          "maxPower": {
            "type": "number",
            "format": "double"
          }
        }
      },
      "UpdateStationSettingsRequest": {
        "type": "object",
        "properties": {
          "maxPowerLimit": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "maxCurrentLimit": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "enableSmartCharging": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "enableLoadBalancing": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "reservationEnabled": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "reservationDurationMinutes": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "authenticationRequired": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "allowAnonymousCharging": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "maxConcurrentSessions": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "defaultIdleFeesEnabled": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "idleFeesGracePeriodMinutes": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "remoteStartEnabled": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "remoteStopEnabled": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "ocppHeartbeatIntervalSeconds": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "ocppMeterValueSampleIntervalSeconds": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          }
        }
      },
      "UpdateTariffRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "energyRate": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "timeRate": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "sessionFee": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "idleRate": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "idleGracePeriodMinutes": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "idleFeeEnabled": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "idleFeeMaximum": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "taxRate": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "peakHoursStart": {
            "type": [
              "null",
              "string"
            ]
          },
          "peakHoursEnd": {
            "type": [
              "null",
              "string"
            ]
          },
          "peakMultiplier": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "weekendMultiplier": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "isFree": {
            "type": [
              "null",
              "boolean"
            ]
          }
        }
      },
      "UpdateTeamMemberRoleRequest": {
        "required": [
          "role"
        ],
        "type": "object",
        "properties": {
          "role": {
            "type": "string"
          }
        }
      },
      "UpdateTerminalAddonStateRequest": {
        "required": [
          "state",
          "notes",
          "datacapMerchantId",
          "datacapApiKey",
          "datacapMode"
        ],
        "type": "object",
        "properties": {
          "state": {
            "type": "string"
          },
          "notes": {
            "type": [
              "null",
              "string"
            ]
          },
          "datacapMerchantId": {
            "type": [
              "null",
              "string"
            ]
          },
          "datacapApiKey": {
            "type": [
              "null",
              "string"
            ]
          },
          "datacapMode": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "UpdateUserRequest": {
        "type": "object",
        "properties": {
          "email": {
            "maxLength": 100,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "firstName": {
            "maxLength": 50,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "lastName": {
            "maxLength": 50,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "phoneNumber": {
            "maxLength": 20,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "address": {
            "maxLength": 200,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "city": {
            "maxLength": 100,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "state": {
            "maxLength": 50,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "postalCode": {
            "maxLength": 20,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          },
          "country": {
            "maxLength": 50,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "UpdateWebhookRequest": {
        "required": [
          "url",
          "events",
          "description",
          "isActive"
        ],
        "type": "object",
        "properties": {
          "url": {
            "type": [
              "null",
              "string"
            ]
          },
          "events": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            }
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "isActive": {
            "type": [
              "null",
              "boolean"
            ]
          }
        }
      },
      "UpsertAddOnCatalogRequest": {
        "required": [
          "code",
          "displayName",
          "description",
          "stripePriceIdMonthly",
          "stripePriceIdAnnual"
        ],
        "type": "object",
        "properties": {
          "code": {
            "type": "string"
          },
          "displayName": {
            "type": "string"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "stripePriceIdMonthly": {
            "type": [
              "null",
              "string"
            ]
          },
          "stripePriceIdAnnual": {
            "type": [
              "null",
              "string"
            ]
          },
          "isActive": {
            "type": "boolean"
          }
        }
      },
      "VariableData": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "value": {
            "type": "string"
          },
          "attributeType": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "component": {
            "$ref": "#/components/schemas/ComponentData"
          }
        }
      },
      "VersionDetailsDto": {
        "type": "object",
        "properties": {
          "version": {
            "type": [
              "null",
              "string"
            ]
          },
          "endpoints": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/EndpointDto"
            }
          }
        }
      },
      "VersionDto": {
        "type": "object",
        "properties": {
          "version": {
            "type": [
              "null",
              "string"
            ]
          },
          "url": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "WalletCreditRequest": {
        "required": [
          "driverId",
          "amount"
        ],
        "type": "object",
        "properties": {
          "driverId": {
            "type": "string",
            "format": "uuid"
          },
          "amount": {
            "type": "number",
            "format": "double"
          },
          "currency": {
            "type": [
              "null",
              "string"
            ]
          },
          "networkUuid": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "reason": {
            "type": [
              "null",
              "string"
            ]
          },
          "idempotencyKey": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      }
    },
    "securitySchemes": {
      "ApiKey": {
        "type": "apiKey",
        "description": "ProRanked public API key. Send it in the X-API-Key header on every request to the eMSP (/api/emsp/v1) and CPMS (/api/cpms/v1) APIs.",
        "name": "X-API-Key",
        "in": "header"
      },
      "Bearer": {
        "type": "http",
        "description": "Driver access token (JWT) obtained from /api/emsp/v1/auth/driver/login. Required IN ADDITION to the X-API-Key on eMSP write operations that act on a driver's own resources.",
        "scheme": "bearer",
        "bearerFormat": "JWT"
      },
      "OCPIToken": {
        "type": "apiKey",
        "description": "OCPI Token Authorization header. Enter the token WITH the 'Token ' prefix.\r\nExample: Token test-token-1234567890abcdef1234567890abcdef1234567890abcdef1234567890\r\n\r\nTest tokens from seed data:\r\n- US Test EMSP: Token test-token-1234567890abcdef1234567890abcdef1234567890abcdef1234567890\r\n- EU EMSP: Token emsp-token-abcdef1234567890abcdef1234567890abcdef1234567890abcdef123456",
        "name": "Authorization",
        "in": "header"
      }
    }
  },
  "tags": [
    {
      "name": "CPOService.API"
    },
    {
      "name": "Public - Locations"
    },
    {
      "name": "Diagnostics Upload"
    },
    {
      "name": "OCPI Versions"
    },
    {
      "name": "Public - Networks"
    },
    {
      "name": "Public API - Chargers"
    },
    {
      "name": "Public API - Sessions"
    },
    {
      "name": "Public API - Wallet"
    },
    {
      "name": "Public API - Charging"
    },
    {
      "name": "Public API - Connectors"
    },
    {
      "name": "Public API - Users"
    },
    {
      "name": "Public API - Authentication"
    },
    {
      "name": "Public API - Driver Authentication"
    },
    {
      "name": "Public API - Branding"
    },
    {
      "name": "Public API - Transactions"
    },
    {
      "name": "Public API - Invoices"
    },
    {
      "name": "Public API - Pricing"
    },
    {
      "name": "Public API - Analytics"
    },
    {
      "name": "Public API - Reports"
    },
    {
      "name": "Public API - Webhooks"
    },
    {
      "name": "Public API - Events"
    },
    {
      "name": "Public API - Reservations"
    },
    {
      "name": "Public API - Locations"
    },
    {
      "name": "Public API - Tariffs"
    },
    {
      "name": "Public API - Smart Charging"
    },
    {
      "name": "Public API - Remote Control"
    },
    {
      "name": "Public API - Notifications"
    },
    {
      "name": "Public API - Favorites"
    },
    {
      "name": "Public API - Push"
    },
    {
      "name": "Public API - Payments"
    },
    {
      "name": "CPMS API"
    },
    {
      "name": "Private API - Authentication"
    },
    {
      "name": "Private API - Stations"
    },
    {
      "name": "Private API - Chargers"
    },
    {
      "name": "Private API - Sessions"
    },
    {
      "name": "Private API - Drivers"
    },
    {
      "name": "Private API - Tariffs"
    },
    {
      "name": "Private API - Analytics"
    },
    {
      "name": "Private API - Usage"
    },
    {
      "name": "Private API - Plans"
    },
    {
      "name": "Private API - Limits"
    },
    {
      "name": "Private API - OCPI"
    },
    {
      "name": "Private API - Settings"
    },
    {
      "name": "Private API - API Keys"
    },
    {
      "name": "Private API - Billing"
    },
    {
      "name": "Private API - ATH Móvil"
    },
    {
      "name": "Private API - Dashboard"
    },
    {
      "name": "Private API - Reports"
    },
    {
      "name": "Private API - CDRs"
    },
    {
      "name": "Private API - Branding"
    },
    {
      "name": "Private API - Webhooks"
    },
    {
      "name": "Private API - Events"
    },
    {
      "name": "Chargers"
    },
    {
      "name": "Private API - Charger Security"
    },
    {
      "name": "Private API - Connectors"
    },
    {
      "name": "Private API - Alerts"
    },
    {
      "name": "Private API - Alert Rules"
    },
    {
      "name": "Private API - Alert Channels"
    },
    {
      "name": "Private API - Networks"
    },
    {
      "name": "Private API - Integrations"
    },
    {
      "name": "Private API - Gateways"
    },
    {
      "name": "Private API - Audit Logs"
    },
    {
      "name": "Private API - Platform"
    },
    {
      "name": "Private API - Platform Alert Rules"
    },
    {
      "name": "Private API - Platform Alert Channels"
    },
    {
      "name": "Private API - Platform Alert Notifications"
    },
    {
      "name": "Private API - Platform API Keys"
    },
    {
      "name": "Private API - Manufacturers"
    },
    {
      "name": "Private API - Charger Models"
    },
    {
      "name": "Private API - Firmware Catalog"
    },
    {
      "name": "Private API - Staging Chargers"
    },
    {
      "name": "Platform - Certificates"
    },
    {
      "name": "Private API - Affiliates"
    },
    {
      "name": "Private API - Terminal Add-on"
    },
    {
      "name": "Webhooks"
    },
    {
      "name": "OCPI Credentials"
    },
    {
      "name": "OCPI Locations"
    },
    {
      "name": "OCPI - Sessions"
    },
    {
      "name": "OCPI 2.2 - CDRs"
    },
    {
      "name": "OCPI 2.2 - Tokens"
    },
    {
      "name": "OCPI 2.2 - Commands"
    },
    {
      "name": "OCPI 2.2 - Tariffs"
    },
    {
      "name": "OCPI 2.2 - ChargingProfiles"
    },
    {
      "name": "OCPP 1.6"
    },
    {
      "name": "OCPP 2.0"
    },
    {
      "name": "Charging Station Management"
    }
  ]
}