export declare const openApiSpec: { readonly openapi: "3.0.3"; readonly info: { readonly title: "EVSE Automation Charger API"; readonly version: "1.0.0"; readonly description: "The EVSE Automation API allows you to remotely observe and control virtual charging stations.\n\n### Key capabilities\n\n* Observe charger health, topology, sessions, and diagnostics ๐Ÿ“Š\n* Execute local and remote control operations safely โšก\n* Simulate OCPP charge-point and central-system interactions ๐Ÿ”Œ\n* Validate real-time behavior through explicit request/response contracts ๐Ÿงช\n\n### Notes\n\n* Most endpoints accept `evseId` in path/query/body with this precedence: path โ†’ query โ†’ body โ†’ default EVSE.\n* Responses are JSON and optimized for operations, QA, and automation flows.\n"; readonly license: { readonly name: "Apache 2.0"; readonly url: "https://www.apache.org/licenses/LICENSE-2.0"; }; readonly contact: { readonly name: "EVSE Automation Team"; }; }; readonly servers: readonly [{ readonly url: "/"; readonly description: "Local CLI runtime (charger-service)"; readonly variables: { readonly basePath: { readonly default: "/"; }; }; readonly 'x-tags': readonly [{ readonly name: "env:local"; readonly description: "Local development process running from CLI"; }, { readonly name: "kind:runtime"; readonly description: "Primary in-process HTTP server"; }]; }, { readonly url: "http://localhost:31311"; readonly description: "Typical local mapped port for charger instance"; readonly 'x-tags': readonly [{ readonly name: "env:test-local"; readonly description: "Local functional QA instance"; }]; }]; readonly tags: readonly [{ readonly name: "Read"; readonly description: "Read charger status, power, topology, and telemetry snapshots."; }, { readonly name: "Control"; readonly description: "Imperative controls for sessions, power, availability, and reset flows."; }, { readonly name: "OCPP CP"; readonly description: "Charge Point to Central System simulation messages."; }, { readonly name: "OCPP CS"; readonly description: "Central System to Charge Point command simulation messages."; }, { readonly name: "Diagnostics"; readonly description: "Operational introspection and runtime diagnostics."; }, { readonly name: "Traffic"; readonly description: "Real-time OCPP message observation via WebSocket or programmatic event bus."; }]; readonly paths: { readonly '/openapi.json': { readonly get: { readonly tags: readonly ["Diagnostics"]; readonly summary: "Get OpenAPI specification document"; readonly operationId: "getOpenApiDocument"; readonly responses: { readonly '200': { readonly description: "OpenAPI JSON document"; }; }; }; }; readonly '/docs': { readonly get: { readonly tags: readonly ["Diagnostics"]; readonly summary: "Get Swagger UI documentation page"; readonly operationId: "getSwaggerDocs"; readonly responses: { readonly '200': { readonly description: "Swagger UI HTML page"; }; }; }; }; readonly '/device.xml': { readonly get: { readonly tags: readonly ["Diagnostics"]; readonly summary: "Get SSDP/UPnP device description XML"; readonly operationId: "getSsdpDeviceDescription"; readonly responses: { readonly '200': { readonly description: "UPnP device description XML"; readonly content: { readonly 'application/xml': { readonly schema: { readonly type: "string"; }; }; }; }; }; }; }; readonly '/health': { readonly get: { readonly tags: readonly ["Read"]; readonly summary: "Get fleet/EVSE health summary"; readonly description: "Returns connectivity aggregation for the selected EVSE scope. Optional filters narrow the response to environment/company/location."; readonly operationId: "getHealth"; readonly parameters: readonly [{ readonly $ref: "#/components/parameters/envId"; }, { readonly $ref: "#/components/parameters/envName"; }, { readonly $ref: "#/components/parameters/companyId"; }, { readonly $ref: "#/components/parameters/companyName"; }, { readonly $ref: "#/components/parameters/locationId"; }, { readonly $ref: "#/components/parameters/locationName"; }]; readonly responses: { readonly '200': { readonly description: "Health summary"; readonly content: { readonly 'application/json': { readonly schema: { readonly $ref: "#/components/schemas/HealthResponse"; }; }; }; }; readonly '400': { readonly $ref: "#/components/responses/BadRequest"; }; }; }; }; readonly '/info': { readonly get: { readonly tags: readonly ["Read"]; readonly summary: "Get EVSE information payload"; readonly operationId: "getInfo"; readonly parameters: readonly [{ readonly $ref: "#/components/parameters/envId"; }, { readonly $ref: "#/components/parameters/envName"; }, { readonly $ref: "#/components/parameters/companyId"; }, { readonly $ref: "#/components/parameters/companyName"; }, { readonly $ref: "#/components/parameters/locationId"; }, { readonly $ref: "#/components/parameters/locationName"; }]; readonly responses: { readonly '200': { readonly description: "Single or multi-EVSE info payload"; readonly content: { readonly 'application/json': { readonly schema: { readonly oneOf: readonly [{ readonly $ref: "#/components/schemas/InfoSingleResponse"; }, { readonly $ref: "#/components/schemas/InfoMultiResponse"; }]; }; }; }; }; readonly '400': { readonly $ref: "#/components/responses/BadRequest"; }; }; }; }; readonly '/status': { readonly get: { readonly tags: readonly ["Read"]; readonly summary: "Get EVSE connector state payload"; readonly operationId: "getStatus"; readonly parameters: readonly [{ readonly $ref: "#/components/parameters/envId"; }, { readonly $ref: "#/components/parameters/envName"; }, { readonly $ref: "#/components/parameters/companyId"; }, { readonly $ref: "#/components/parameters/companyName"; }, { readonly $ref: "#/components/parameters/locationId"; }, { readonly $ref: "#/components/parameters/locationName"; }]; readonly responses: { readonly '200': { readonly description: "Single or multi-EVSE status payload"; readonly content: { readonly 'application/json': { readonly schema: { readonly oneOf: readonly [{ readonly $ref: "#/components/schemas/StatusSingleResponse"; }, { readonly $ref: "#/components/schemas/StatusMultiResponse"; }]; }; }; }; }; readonly '400': { readonly $ref: "#/components/responses/BadRequest"; }; }; }; }; readonly '/connectors': { readonly get: { readonly tags: readonly ["Read"]; readonly summary: "List all connector details for selected EVSE"; readonly operationId: "listConnectors"; readonly parameters: readonly [{ readonly $ref: "#/components/parameters/evseIdQuery"; }]; readonly responses: { readonly '200': { readonly description: "Connector inventory"; readonly content: { readonly 'application/json': { readonly schema: { readonly $ref: "#/components/schemas/ConnectorListResponse"; }; }; }; }; readonly '404': { readonly $ref: "#/components/responses/NotFound"; }; }; }; }; readonly '/connectors/{id}': { readonly get: { readonly tags: readonly ["Read"]; readonly summary: "Get specific connector details"; readonly operationId: "getConnector"; readonly parameters: readonly [{ readonly $ref: "#/components/parameters/connectorIdPath"; }, { readonly $ref: "#/components/parameters/evseIdQuery"; }]; readonly responses: { readonly '200': { readonly description: "Connector detail"; readonly content: { readonly 'application/json': { readonly schema: { readonly $ref: "#/components/schemas/ConnectorDetailResponse"; }; }; }; }; readonly '404': { readonly $ref: "#/components/responses/NotFound"; }; }; }; }; readonly '/transactions': { readonly get: { readonly tags: readonly ["Read"]; readonly summary: "Get active transactions"; readonly operationId: "listTransactions"; readonly parameters: readonly [{ readonly $ref: "#/components/parameters/evseIdQuery"; }]; readonly responses: { readonly '200': { readonly description: "Active transaction list"; readonly content: { readonly 'application/json': { readonly schema: { readonly $ref: "#/components/schemas/TransactionsResponse"; }; }; }; }; readonly '404': { readonly $ref: "#/components/responses/NotFound"; }; }; }; }; readonly '/connectors/{id}/transaction': { readonly get: { readonly tags: readonly ["Read"]; readonly summary: "Get active transaction for connector"; readonly operationId: "getConnectorTransaction"; readonly parameters: readonly [{ readonly $ref: "#/components/parameters/connectorIdPath"; }, { readonly $ref: "#/components/parameters/evseIdQuery"; }]; readonly responses: { readonly '200': { readonly description: "Connector transaction details"; }; readonly '404': { readonly $ref: "#/components/responses/NotFound"; }; }; }; }; readonly '/connectors/{id}/availability': { readonly post: { readonly tags: readonly ["Control"]; readonly summary: "Set connector availability state"; readonly operationId: "setConnectorAvailability"; readonly parameters: readonly [{ readonly $ref: "#/components/parameters/connectorIdPath"; }]; readonly requestBody: { readonly $ref: "#/components/requestBodies/ConnectorAvailabilityBody"; }; readonly responses: { readonly '200': { readonly description: "Connector availability updated"; }; readonly '400': { readonly $ref: "#/components/responses/BadRequest"; }; readonly '404': { readonly $ref: "#/components/responses/NotFound"; }; readonly '500': { readonly $ref: "#/components/responses/Error"; }; }; }; }; readonly '/configuration': { readonly get: { readonly tags: readonly ["Read", "Diagnostics"]; readonly summary: "Get charger capabilities and configuration"; readonly operationId: "getConfiguration"; readonly parameters: readonly [{ readonly $ref: "#/components/parameters/evseIdQuery"; }]; readonly responses: { readonly '200': { readonly description: "Capabilities and runtime configuration"; }; readonly '404': { readonly $ref: "#/components/responses/NotFound"; }; }; }; readonly post: { readonly tags: readonly ["Control"]; readonly summary: "Update charger power configuration"; readonly operationId: "updateConfiguration"; readonly requestBody: { readonly $ref: "#/components/requestBodies/PowerConfigBody"; }; readonly responses: { readonly '200': { readonly description: "Configuration updated"; }; readonly '400': { readonly $ref: "#/components/responses/BadRequest"; }; readonly '404': { readonly $ref: "#/components/responses/NotFound"; }; }; }; }; readonly '/meters': { readonly get: { readonly tags: readonly ["Read", "Diagnostics"]; readonly summary: "Get meter values snapshot"; readonly operationId: "getMeters"; readonly parameters: readonly [{ readonly $ref: "#/components/parameters/evseIdQuery"; }]; readonly responses: { readonly '200': { readonly description: "Meter payload"; }; readonly '404': { readonly $ref: "#/components/responses/NotFound"; }; }; }; }; readonly '/diagnostics': { readonly get: { readonly tags: readonly ["Diagnostics"]; readonly summary: "Get runtime diagnostics"; readonly operationId: "getDiagnostics"; readonly parameters: readonly [{ readonly $ref: "#/components/parameters/evseIdQuery"; }]; readonly responses: { readonly '200': { readonly description: "Runtime diagnostics payload"; }; readonly '404': { readonly $ref: "#/components/responses/NotFound"; }; }; }; }; readonly '/control/start': { readonly post: { readonly tags: readonly ["Control"]; readonly summary: "Start local charging transaction"; readonly operationId: "controlStart"; readonly requestBody: { readonly $ref: "#/components/requestBodies/ControlStartBody"; }; readonly responses: { readonly '200': { readonly $ref: "#/components/responses/Ok"; }; readonly '404': { readonly $ref: "#/components/responses/NotFound"; }; readonly '500': { readonly $ref: "#/components/responses/Error"; }; }; }; }; readonly '/control/stop': { readonly post: { readonly tags: readonly ["Control"]; readonly summary: "Stop local charging transaction"; readonly operationId: "controlStop"; readonly requestBody: { readonly $ref: "#/components/requestBodies/ControlStopBody"; }; readonly responses: { readonly '200': { readonly $ref: "#/components/responses/Ok"; }; readonly '204': { readonly description: "No active transaction to stop"; }; readonly '404': { readonly $ref: "#/components/responses/NotFound"; }; readonly '500': { readonly $ref: "#/components/responses/Error"; }; }; }; }; readonly '/control/status': { readonly post: { readonly tags: readonly ["Control"]; readonly summary: "Force connector status"; readonly operationId: "controlStatus"; readonly requestBody: { readonly $ref: "#/components/requestBodies/ControlStatusBody"; }; readonly responses: { readonly '200': { readonly $ref: "#/components/responses/Ok"; }; readonly '400': { readonly $ref: "#/components/responses/BadRequest"; }; readonly '404': { readonly $ref: "#/components/responses/NotFound"; }; readonly '500': { readonly $ref: "#/components/responses/Error"; }; }; }; }; readonly '/control/power': { readonly post: { readonly tags: readonly ["Control"]; readonly summary: "Adjust amps/volts for meter simulation"; readonly operationId: "controlPower"; readonly requestBody: { readonly $ref: "#/components/requestBodies/PowerConfigBody"; }; readonly responses: { readonly '200': { readonly description: "Power updated"; }; readonly '400': { readonly $ref: "#/components/responses/BadRequest"; }; readonly '404': { readonly $ref: "#/components/responses/NotFound"; }; }; }; }; readonly '/control/disconnect': { readonly post: { readonly tags: readonly ["Control"]; readonly summary: "Simulate websocket disconnect"; readonly operationId: "controlDisconnect"; readonly requestBody: { readonly $ref: "#/components/requestBodies/EvseOnlyBody"; }; readonly responses: { readonly '200': { readonly $ref: "#/components/responses/Ok"; }; readonly '404': { readonly $ref: "#/components/responses/NotFound"; }; }; }; }; readonly '/control/reconnect': { readonly post: { readonly tags: readonly ["Control"]; readonly summary: "Simulate websocket reconnect"; readonly operationId: "controlReconnect"; readonly requestBody: { readonly $ref: "#/components/requestBodies/EvseOnlyBody"; }; readonly responses: { readonly '200': { readonly $ref: "#/components/responses/Ok"; }; readonly '404': { readonly $ref: "#/components/responses/NotFound"; }; }; }; }; readonly '/control/reset': { readonly post: { readonly tags: readonly ["Control"]; readonly summary: "Perform local reset"; readonly operationId: "controlReset"; readonly requestBody: { readonly $ref: "#/components/requestBodies/ResetBody"; }; readonly responses: { readonly '200': { readonly description: "Reset initiated"; }; readonly '404': { readonly $ref: "#/components/responses/NotFound"; }; readonly '500': { readonly $ref: "#/components/responses/Error"; }; }; }; }; readonly '/control/emergency-stop': { readonly post: { readonly tags: readonly ["Control"]; readonly summary: "Emergency-stop all active sessions on EVSE"; readonly operationId: "controlEmergencyStop"; readonly requestBody: { readonly $ref: "#/components/requestBodies/EvseOnlyBody"; }; readonly responses: { readonly '200': { readonly description: "Emergency stop result"; }; readonly '404': { readonly $ref: "#/components/responses/NotFound"; }; readonly '500': { readonly $ref: "#/components/responses/Error"; }; }; }; }; readonly '/ocpp/cp/boot': { readonly post: { readonly tags: readonly ["OCPP CP"]; readonly summary: "CP BootNotification"; readonly operationId: "cpBootNotification"; readonly requestBody: { readonly $ref: "#/components/requestBodies/EvseOnlyBody"; }; readonly responses: { readonly '200': { readonly description: "Boot result"; }; readonly '404': { readonly $ref: "#/components/responses/NotFound"; }; readonly '500': { readonly $ref: "#/components/responses/Error"; }; }; }; }; readonly '/ocpp/cp/heartbeat': { readonly post: { readonly tags: readonly ["OCPP CP"]; readonly summary: "CP Heartbeat"; readonly operationId: "cpHeartbeat"; readonly requestBody: { readonly $ref: "#/components/requestBodies/EvseOnlyBody"; }; readonly responses: { readonly '200': { readonly description: "Heartbeat result"; }; readonly '404': { readonly $ref: "#/components/responses/NotFound"; }; readonly '500': { readonly $ref: "#/components/responses/Error"; }; }; }; }; readonly '/ocpp/cp/authorize': { readonly post: { readonly tags: readonly ["OCPP CP"]; readonly summary: "CP Authorize"; readonly operationId: "cpAuthorize"; readonly requestBody: { readonly $ref: "#/components/requestBodies/AuthorizeBody"; }; readonly responses: { readonly '200': { readonly description: "Authorization result"; }; readonly '400': { readonly $ref: "#/components/responses/BadRequest"; }; readonly '404': { readonly $ref: "#/components/responses/NotFound"; }; readonly '500': { readonly $ref: "#/components/responses/Error"; }; }; }; }; readonly '/ocpp/cp/start-transaction': { readonly post: { readonly tags: readonly ["OCPP CP"]; readonly summary: "CP StartTransaction"; readonly operationId: "cpStartTransaction"; readonly requestBody: { readonly $ref: "#/components/requestBodies/ControlStartBody"; }; readonly responses: { readonly '200': { readonly description: "Transaction started"; }; readonly '404': { readonly $ref: "#/components/responses/NotFound"; }; readonly '500': { readonly $ref: "#/components/responses/Error"; }; }; }; }; readonly '/ocpp/cp/stop-transaction': { readonly post: { readonly tags: readonly ["OCPP CP"]; readonly summary: "CP StopTransaction"; readonly operationId: "cpStopTransaction"; readonly requestBody: { readonly $ref: "#/components/requestBodies/StopTransactionBody"; }; readonly responses: { readonly '200': { readonly description: "Transaction stop result"; }; readonly '404': { readonly $ref: "#/components/responses/NotFound"; }; readonly '500': { readonly $ref: "#/components/responses/Error"; }; }; }; }; readonly '/ocpp/cp/meter-values': { readonly post: { readonly tags: readonly ["OCPP CP"]; readonly summary: "CP MeterValues"; readonly operationId: "cpMeterValues"; readonly requestBody: { readonly $ref: "#/components/requestBodies/MeterValuesBody"; }; readonly responses: { readonly '200': { readonly description: "Meter values sent"; }; readonly '404': { readonly $ref: "#/components/responses/NotFound"; }; readonly '500': { readonly $ref: "#/components/responses/Error"; }; }; }; }; readonly '/ocpp/cp/status-notification': { readonly post: { readonly tags: readonly ["OCPP CP"]; readonly summary: "CP StatusNotification"; readonly operationId: "cpStatusNotification"; readonly requestBody: { readonly $ref: "#/components/requestBodies/StatusNotificationBody"; }; readonly responses: { readonly '200': { readonly description: "Status notification sent"; }; readonly '400': { readonly $ref: "#/components/responses/BadRequest"; }; readonly '404': { readonly $ref: "#/components/responses/NotFound"; }; readonly '500': { readonly $ref: "#/components/responses/Error"; }; }; }; }; readonly '/ocpp/cp/data-transfer': { readonly post: { readonly tags: readonly ["OCPP CP"]; readonly summary: "CP DataTransfer"; readonly operationId: "cpDataTransfer"; readonly requestBody: { readonly $ref: "#/components/requestBodies/DataTransferBody"; }; readonly responses: { readonly '200': { readonly description: "Data transfer sent"; }; readonly '400': { readonly $ref: "#/components/responses/BadRequest"; }; readonly '404': { readonly $ref: "#/components/responses/NotFound"; }; readonly '500': { readonly $ref: "#/components/responses/Error"; }; }; }; }; readonly '/ocpp/cp/firmware-status': { readonly post: { readonly tags: readonly ["OCPP CP"]; readonly summary: "CP FirmwareStatusNotification"; readonly operationId: "cpFirmwareStatus"; readonly requestBody: { readonly $ref: "#/components/requestBodies/FirmwareStatusBody"; }; readonly responses: { readonly '200': { readonly description: "Firmware status sent"; }; readonly '400': { readonly $ref: "#/components/responses/BadRequest"; }; readonly '404': { readonly $ref: "#/components/responses/NotFound"; }; readonly '500': { readonly $ref: "#/components/responses/Error"; }; }; }; }; readonly '/ocpp/cp/diagnostics-status': { readonly post: { readonly tags: readonly ["OCPP CP"]; readonly summary: "CP DiagnosticsStatusNotification"; readonly operationId: "cpDiagnosticsStatus"; readonly requestBody: { readonly $ref: "#/components/requestBodies/FirmwareStatusBody"; }; readonly responses: { readonly '200': { readonly description: "Diagnostics status sent"; }; readonly '400': { readonly $ref: "#/components/responses/BadRequest"; }; readonly '404': { readonly $ref: "#/components/responses/NotFound"; }; readonly '500': { readonly $ref: "#/components/responses/Error"; }; }; }; }; readonly '/ocpp/cs/get-configuration': { readonly post: { readonly tags: readonly ["OCPP CS"]; readonly summary: "CS GetConfiguration command"; readonly operationId: "csGetConfiguration"; readonly requestBody: { readonly $ref: "#/components/requestBodies/EvseOnlyBody"; }; readonly responses: { readonly '200': { readonly description: "Configuration result"; }; readonly '404': { readonly $ref: "#/components/responses/NotFound"; }; }; }; }; readonly '/ocpp/cs/change-configuration': { readonly post: { readonly tags: readonly ["OCPP CS"]; readonly summary: "CS ChangeConfiguration command"; readonly operationId: "csChangeConfiguration"; readonly requestBody: { readonly $ref: "#/components/requestBodies/ChangeConfigurationBody"; }; readonly responses: { readonly '200': { readonly description: "Change configuration result"; }; readonly '400': { readonly $ref: "#/components/responses/BadRequest"; }; readonly '404': { readonly $ref: "#/components/responses/NotFound"; }; }; }; }; readonly '/ocpp/cs/change-availability': { readonly post: { readonly tags: readonly ["OCPP CS"]; readonly summary: "CS ChangeAvailability command"; readonly operationId: "csChangeAvailability"; readonly requestBody: { readonly $ref: "#/components/requestBodies/ChangeAvailabilityBody"; }; readonly responses: { readonly '200': { readonly description: "Change availability result"; }; readonly '400': { readonly $ref: "#/components/responses/BadRequest"; }; readonly '404': { readonly $ref: "#/components/responses/NotFound"; }; }; }; }; readonly '/ocpp/cs/clear-cache': { readonly post: { readonly tags: readonly ["OCPP CS"]; readonly summary: "CS ClearCache command"; readonly operationId: "csClearCache"; readonly requestBody: { readonly $ref: "#/components/requestBodies/EvseOnlyBody"; }; readonly responses: { readonly '200': { readonly description: "Clear cache result"; }; readonly '404': { readonly $ref: "#/components/responses/NotFound"; }; }; }; }; readonly '/ocpp/cs/trigger-message': { readonly post: { readonly tags: readonly ["OCPP CS"]; readonly summary: "CS TriggerMessage command"; readonly operationId: "csTriggerMessage"; readonly requestBody: { readonly $ref: "#/components/requestBodies/TriggerMessageBody"; }; readonly responses: { readonly '200': { readonly description: "Trigger result"; }; readonly '400': { readonly $ref: "#/components/responses/BadRequest"; }; readonly '404': { readonly $ref: "#/components/responses/NotFound"; }; }; }; }; readonly '/ocpp/cs/remote-start': { readonly post: { readonly tags: readonly ["OCPP CS"]; readonly summary: "CS RemoteStartTransaction command"; readonly operationId: "csRemoteStart"; readonly requestBody: { readonly $ref: "#/components/requestBodies/RemoteStartBody"; }; readonly responses: { readonly '200': { readonly description: "Remote start result"; }; readonly '400': { readonly $ref: "#/components/responses/BadRequest"; }; readonly '404': { readonly $ref: "#/components/responses/NotFound"; }; }; }; }; readonly '/ocpp/cs/remote-stop': { readonly post: { readonly tags: readonly ["OCPP CS"]; readonly summary: "CS RemoteStopTransaction command"; readonly operationId: "csRemoteStop"; readonly requestBody: { readonly $ref: "#/components/requestBodies/RemoteStopBody"; }; readonly responses: { readonly '200': { readonly description: "Remote stop result"; }; readonly '404': { readonly $ref: "#/components/responses/NotFound"; }; }; }; }; readonly '/ocpp/cs/reset': { readonly post: { readonly tags: readonly ["OCPP CS"]; readonly summary: "CS Reset command"; readonly operationId: "csReset"; readonly requestBody: { readonly $ref: "#/components/requestBodies/ResetBody"; }; readonly responses: { readonly '200': { readonly description: "Reset result"; }; readonly '404': { readonly $ref: "#/components/responses/NotFound"; }; }; }; }; readonly '/ocpp/cs/unlock-connector': { readonly post: { readonly tags: readonly ["OCPP CS"]; readonly summary: "CS UnlockConnector command"; readonly operationId: "csUnlockConnector"; readonly requestBody: { readonly $ref: "#/components/requestBodies/UnlockConnectorBody"; }; readonly responses: { readonly '200': { readonly description: "Unlock result"; }; readonly '400': { readonly $ref: "#/components/responses/BadRequest"; }; readonly '404': { readonly $ref: "#/components/responses/NotFound"; }; }; }; }; readonly '/ocpp/cs/update-firmware': { readonly post: { readonly tags: readonly ["OCPP CS"]; readonly summary: "CS UpdateFirmware command"; readonly operationId: "csUpdateFirmware"; readonly requestBody: { readonly $ref: "#/components/requestBodies/UpdateFirmwareBody"; }; readonly responses: { readonly '200': { readonly description: "Firmware update accepted/result"; }; readonly '400': { readonly $ref: "#/components/responses/BadRequest"; }; readonly '404': { readonly $ref: "#/components/responses/NotFound"; }; }; }; }; readonly '/ocpp/cs/get-diagnostics': { readonly post: { readonly tags: readonly ["OCPP CS"]; readonly summary: "CS GetDiagnostics command"; readonly operationId: "csGetDiagnostics"; readonly requestBody: { readonly $ref: "#/components/requestBodies/GetDiagnosticsBody"; }; readonly responses: { readonly '200': { readonly description: "Diagnostics request accepted/result"; }; readonly '400': { readonly $ref: "#/components/responses/BadRequest"; }; readonly '404': { readonly $ref: "#/components/responses/NotFound"; }; }; }; }; readonly '/ocpp/cs/reserve-now': { readonly post: { readonly tags: readonly ["OCPP CS"]; readonly summary: "CS ReserveNow command"; readonly operationId: "csReserveNow"; readonly requestBody: { readonly $ref: "#/components/requestBodies/ReserveNowBody"; }; readonly responses: { readonly '200': { readonly description: "Reservation result"; }; readonly '400': { readonly $ref: "#/components/responses/BadRequest"; }; readonly '404': { readonly $ref: "#/components/responses/NotFound"; }; }; }; }; readonly '/ocpp/cs/cancel-reservation': { readonly post: { readonly tags: readonly ["OCPP CS"]; readonly summary: "CS CancelReservation command"; readonly operationId: "csCancelReservation"; readonly requestBody: { readonly $ref: "#/components/requestBodies/CancelReservationBody"; }; readonly responses: { readonly '200': { readonly description: "Cancel reservation result"; }; readonly '400': { readonly $ref: "#/components/responses/BadRequest"; }; readonly '404': { readonly $ref: "#/components/responses/NotFound"; }; }; }; }; readonly '/ws/traffic': { readonly 'x-websocket': true; readonly get: { readonly tags: readonly ["Traffic"]; readonly summary: "OCPP traffic WebSocket stream"; readonly operationId: "wsTrafficStream"; readonly description: "Upgrade to a WebSocket connection to receive real-time OCPP message events.\n\nEach message is a JSON-serialised `TrafficEvent`:\n```json\n{\n \"ts\": \"2024-01-15T10:00:00.000Z\",\n \"evseId\": \"EVSE-001\",\n \"dir\": \"send\" | \"recv\",\n \"msgType\": 2 | 3 | 4,\n \"action\": \"BootNotification\",\n \"msgId\": \"uuid-...\",\n \"payload\": {}\n}\n```\n\nFilter by EVSE with the `evseId` query parameter: `ws://host/ws/traffic?evseId=EVSE-001`"; readonly parameters: readonly [{ readonly name: "evseId"; readonly in: "query"; readonly required: false; readonly description: "Filter events to a single EVSE. Omit to receive all charger traffic."; readonly schema: { readonly type: "string"; }; }, { readonly name: "Connection"; readonly in: "header"; readonly required: true; readonly schema: { readonly type: "string"; readonly enum: readonly ["Upgrade"]; }; }, { readonly name: "Upgrade"; readonly in: "header"; readonly required: true; readonly schema: { readonly type: "string"; readonly enum: readonly ["websocket"]; }; }]; readonly responses: { readonly '101': { readonly description: "Switching Protocols โ€“ WebSocket connection established"; }; readonly '400': { readonly description: "Bad Request โ€“ not a WebSocket upgrade request"; }; }; }; }; }; readonly components: { readonly parameters: { readonly evseIdQuery: { readonly name: "evseId"; readonly in: "query"; readonly required: false; readonly description: "Target EVSE ID (optional when a default EVSE exists)."; readonly schema: { readonly type: "string"; }; }; readonly connectorIdPath: { readonly name: "id"; readonly in: "path"; readonly required: true; readonly description: "Connector ID."; readonly schema: { readonly type: "integer"; readonly minimum: 1; }; }; readonly envId: { readonly name: "envId"; readonly in: "query"; readonly schema: { readonly type: "string"; }; }; readonly envName: { readonly name: "envName"; readonly in: "query"; readonly schema: { readonly type: "string"; }; }; readonly companyId: { readonly name: "companyId"; readonly in: "query"; readonly schema: { readonly type: "string"; }; }; readonly companyName: { readonly name: "companyName"; readonly in: "query"; readonly schema: { readonly type: "string"; }; }; readonly locationId: { readonly name: "locationId"; readonly in: "query"; readonly schema: { readonly type: "string"; }; }; readonly locationName: { readonly name: "locationName"; readonly in: "query"; readonly schema: { readonly type: "string"; }; }; }; readonly responses: { readonly Ok: { readonly description: "Operation succeeded"; readonly content: { readonly 'application/json': { readonly schema: { readonly $ref: "#/components/schemas/OkResponse"; }; }; }; }; readonly Error: { readonly description: "Unexpected runtime error"; readonly content: { readonly 'application/json': { readonly schema: { readonly $ref: "#/components/schemas/ErrorResponse"; }; }; }; }; readonly BadRequest: { readonly description: "Validation error"; readonly content: { readonly 'application/json': { readonly schema: { readonly $ref: "#/components/schemas/ErrorResponse"; }; readonly examples: { readonly missingField: { readonly summary: "Required field is missing"; readonly value: { readonly error: "idTag is required"; }; }; readonly invalidState: { readonly summary: "Unsupported connector state"; readonly value: { readonly error: "state is required"; }; }; }; }; }; }; readonly NotFound: { readonly description: "EVSE or resource not found"; readonly content: { readonly 'application/json': { readonly schema: { readonly $ref: "#/components/schemas/ErrorResponse"; }; readonly examples: { readonly evseMissing: { readonly summary: "EVSE identifier not found"; readonly value: { readonly error: "evse_not_found"; readonly details: "Requested EVSE does not exist in current runtime"; }; }; readonly connectorMissing: { readonly summary: "Connector not found"; readonly value: { readonly error: "connector_not_found"; }; }; }; }; }; }; }; readonly requestBodies: { readonly EvseOnlyBody: { readonly required: false; readonly content: { readonly 'application/json': { readonly schema: { readonly type: "object"; readonly properties: { readonly evseId: { readonly type: "string"; }; }; }; }; }; }; readonly ControlStartBody: { readonly required: false; readonly content: { readonly 'application/json': { readonly schema: { readonly type: "object"; readonly properties: { readonly evseId: { readonly type: "string"; }; readonly connectorId: { readonly type: "integer"; readonly minimum: 1; readonly default: 1; }; readonly idTag: { readonly type: "string"; readonly default: "LOCALTAG"; }; }; }; }; }; }; readonly ControlStopBody: { readonly required: false; readonly content: { readonly 'application/json': { readonly schema: { readonly type: "object"; readonly properties: { readonly evseId: { readonly type: "string"; }; readonly connectorId: { readonly type: "integer"; readonly minimum: 1; readonly default: 1; }; }; }; }; }; }; readonly ControlStatusBody: { readonly required: true; readonly content: { readonly 'application/json': { readonly schema: { readonly type: "object"; readonly required: readonly ["state"]; readonly properties: { readonly evseId: { readonly type: "string"; }; readonly connectorId: { readonly type: "integer"; readonly minimum: 1; readonly default: 1; }; readonly state: { readonly $ref: "#/components/schemas/ConnectorState"; }; }; }; }; }; }; readonly PowerConfigBody: { readonly required: false; readonly content: { readonly 'application/json': { readonly schema: { readonly type: "object"; readonly properties: { readonly evseId: { readonly type: "string"; }; readonly amps: { readonly type: "number"; readonly minimum: 0; readonly default: 16; }; readonly volts: { readonly type: "number"; readonly minimum: 0; readonly default: 230; }; }; }; }; }; }; readonly ConnectorAvailabilityBody: { readonly required: false; readonly content: { readonly 'application/json': { readonly schema: { readonly type: "object"; readonly properties: { readonly evseId: { readonly type: "string"; }; readonly available: { readonly type: "boolean"; readonly default: true; }; }; }; }; }; }; readonly ResetBody: { readonly required: false; readonly content: { readonly 'application/json': { readonly schema: { readonly type: "object"; readonly properties: { readonly evseId: { readonly type: "string"; }; readonly type: { readonly type: "string"; readonly enum: readonly ["Soft", "Hard"]; readonly default: "Soft"; }; }; }; }; }; }; readonly AuthorizeBody: { readonly required: true; readonly content: { readonly 'application/json': { readonly schema: { readonly type: "object"; readonly required: readonly ["idTag"]; readonly properties: { readonly evseId: { readonly type: "string"; }; readonly idTag: { readonly type: "string"; }; }; }; }; }; }; readonly StopTransactionBody: { readonly required: false; readonly content: { readonly 'application/json': { readonly schema: { readonly type: "object"; readonly properties: { readonly evseId: { readonly type: "string"; }; readonly connectorId: { readonly type: "integer"; readonly default: 1; }; readonly reason: { readonly type: "string"; readonly default: "Remote"; }; }; }; }; }; }; readonly MeterValuesBody: { readonly required: false; readonly content: { readonly 'application/json': { readonly schema: { readonly type: "object"; readonly properties: { readonly evseId: { readonly type: "string"; }; readonly connectorId: { readonly type: "integer"; readonly default: 1; }; readonly transactionId: { readonly type: "integer"; }; }; }; }; }; }; readonly StatusNotificationBody: { readonly required: true; readonly content: { readonly 'application/json': { readonly schema: { readonly type: "object"; readonly required: readonly ["status"]; readonly properties: { readonly evseId: { readonly type: "string"; }; readonly connectorId: { readonly type: "integer"; readonly default: 1; }; readonly status: { readonly $ref: "#/components/schemas/ConnectorState"; }; readonly errorCode: { readonly type: "string"; }; }; }; }; }; }; readonly DataTransferBody: { readonly required: true; readonly content: { readonly 'application/json': { readonly schema: { readonly type: "object"; readonly required: readonly ["vendorId"]; readonly properties: { readonly evseId: { readonly type: "string"; }; readonly vendorId: { readonly type: "string"; }; readonly messageId: { readonly type: "string"; }; readonly data: { readonly type: "string"; }; }; }; }; }; }; readonly FirmwareStatusBody: { readonly required: true; readonly content: { readonly 'application/json': { readonly schema: { readonly type: "object"; readonly required: readonly ["status"]; readonly properties: { readonly evseId: { readonly type: "string"; }; readonly status: { readonly type: "string"; }; }; }; }; }; }; readonly ChangeConfigurationBody: { readonly required: true; readonly content: { readonly 'application/json': { readonly schema: { readonly type: "object"; readonly required: readonly ["key"]; readonly properties: { readonly evseId: { readonly type: "string"; }; readonly key: { readonly type: "string"; }; readonly value: { readonly type: "string"; }; }; }; }; }; }; readonly ChangeAvailabilityBody: { readonly required: true; readonly content: { readonly 'application/json': { readonly schema: { readonly type: "object"; readonly required: readonly ["type"]; readonly properties: { readonly evseId: { readonly type: "string"; }; readonly connectorId: { readonly type: "integer"; readonly default: 0; }; readonly type: { readonly type: "string"; readonly enum: readonly ["Inoperative", "Operative"]; }; }; }; }; }; }; readonly TriggerMessageBody: { readonly required: true; readonly content: { readonly 'application/json': { readonly schema: { readonly type: "object"; readonly required: readonly ["requestedMessage"]; readonly properties: { readonly evseId: { readonly type: "string"; }; readonly requestedMessage: { readonly type: "string"; }; readonly connectorId: { readonly type: "integer"; }; }; }; }; }; }; readonly RemoteStartBody: { readonly required: true; readonly content: { readonly 'application/json': { readonly schema: { readonly type: "object"; readonly required: readonly ["idTag"]; readonly properties: { readonly evseId: { readonly type: "string"; }; readonly connectorId: { readonly type: "integer"; }; readonly idTag: { readonly type: "string"; }; }; }; }; }; }; readonly RemoteStopBody: { readonly required: false; readonly content: { readonly 'application/json': { readonly schema: { readonly type: "object"; readonly properties: { readonly evseId: { readonly type: "string"; }; readonly transactionId: { readonly type: "integer"; }; readonly connectorId: { readonly type: "integer"; }; }; }; }; }; }; readonly UnlockConnectorBody: { readonly required: true; readonly content: { readonly 'application/json': { readonly schema: { readonly type: "object"; readonly required: readonly ["connectorId"]; readonly properties: { readonly evseId: { readonly type: "string"; }; readonly connectorId: { readonly type: "integer"; readonly minimum: 1; }; }; }; }; }; }; readonly UpdateFirmwareBody: { readonly required: false; readonly content: { readonly 'application/json': { readonly schema: { readonly type: "object"; readonly properties: { readonly evseId: { readonly type: "string"; }; readonly location: { readonly type: "string"; readonly format: "uri"; }; readonly retrieveDate: { readonly type: "string"; readonly format: "date-time"; }; readonly checksum: { readonly type: "string"; }; readonly version: { readonly type: "string"; }; readonly retries: { readonly type: "integer"; readonly minimum: 0; }; readonly retryInterval: { readonly type: "integer"; readonly minimum: 0; }; }; }; }; }; }; readonly GetDiagnosticsBody: { readonly required: true; readonly content: { readonly 'application/json': { readonly schema: { readonly type: "object"; readonly required: readonly ["location"]; readonly properties: { readonly evseId: { readonly type: "string"; }; readonly location: { readonly type: "string"; readonly format: "uri"; }; readonly retries: { readonly type: "integer"; readonly minimum: 0; }; readonly retryInterval: { readonly type: "integer"; readonly minimum: 0; }; readonly startTime: { readonly type: "string"; readonly format: "date-time"; }; readonly stopTime: { readonly type: "string"; readonly format: "date-time"; }; }; }; }; }; }; readonly ReserveNowBody: { readonly required: true; readonly content: { readonly 'application/json': { readonly schema: { readonly type: "object"; readonly required: readonly ["connectorId", "expiryDate", "idTag", "reservationId"]; readonly properties: { readonly evseId: { readonly type: "string"; }; readonly connectorId: { readonly type: "integer"; readonly minimum: 1; }; readonly expiryDate: { readonly type: "string"; readonly format: "date-time"; }; readonly idTag: { readonly type: "string"; }; readonly reservationId: { readonly type: "integer"; readonly minimum: 1; }; }; }; }; }; }; readonly CancelReservationBody: { readonly required: true; readonly content: { readonly 'application/json': { readonly schema: { readonly type: "object"; readonly required: readonly ["reservationId"]; readonly properties: { readonly evseId: { readonly type: "string"; }; readonly reservationId: { readonly type: "integer"; readonly minimum: 1; }; }; }; }; }; }; }; readonly schemas: { readonly ErrorResponse: { readonly type: "object"; readonly required: readonly ["error"]; readonly properties: { readonly error: { readonly type: "string"; readonly description: "Machine-readable error code (for example: bad_request, evse_not_found, internal_error)."; }; readonly message: { readonly type: "string"; readonly description: "Optional human-readable message used by some command handlers."; }; readonly details: { readonly type: "string"; readonly description: "Additional context intended for client troubleshooting."; }; }; }; readonly OkResponse: { readonly type: "object"; readonly properties: { readonly ok: { readonly type: "boolean"; readonly example: true; }; readonly evseId: { readonly type: "string"; }; }; }; readonly ScopeMeta: { readonly type: "object"; readonly properties: { readonly id: { readonly type: "string"; }; readonly name: { readonly type: "string"; }; }; }; readonly PowerProfile: { readonly type: "object"; readonly properties: { readonly amps: { readonly type: "number"; }; readonly volts: { readonly type: "number"; }; readonly watts: { readonly type: "number"; }; }; }; readonly ConnectorState: { readonly type: "string"; readonly enum: readonly ["Available", "Unavailable", "Faulted", "Preparing", "Charging", "Finishing", "SuspendedEV", "SuspendedEVSE"]; }; readonly ConnectorStatus: { readonly type: "object"; readonly properties: { readonly id: { readonly type: "integer"; }; readonly state: { readonly $ref: "#/components/schemas/ConnectorState"; }; readonly errorCode: { readonly type: "string"; }; readonly transactionId: { readonly type: "integer"; readonly nullable: true; }; }; }; readonly HealthResponse: { readonly type: "object"; readonly properties: { readonly connected: { readonly type: "boolean"; }; readonly connectedCount: { readonly type: "integer"; }; readonly total: { readonly type: "integer"; }; readonly evses: { readonly type: "array"; readonly items: { readonly type: "object"; readonly properties: { readonly evseId: { readonly type: "string"; }; readonly connected: { readonly type: "boolean"; }; }; }; }; }; }; readonly InfoEvseItem: { readonly type: "object"; readonly properties: { readonly chargerId: { readonly type: "string"; }; readonly evseId: { readonly type: "string"; }; readonly csmsUrl: { readonly type: "string"; }; readonly connectors: { readonly type: "integer"; }; readonly location: { readonly $ref: "#/components/schemas/ScopeMeta"; }; readonly company: { readonly $ref: "#/components/schemas/ScopeMeta"; }; readonly environment: { readonly $ref: "#/components/schemas/ScopeMeta"; }; readonly power: { readonly $ref: "#/components/schemas/PowerProfile"; }; readonly heartbeatMs: { readonly type: "integer"; }; readonly lastMessageAt: { readonly type: "number"; readonly nullable: true; }; }; }; readonly InfoSingleResponse: { readonly allOf: readonly [{ readonly type: "object"; readonly properties: { readonly containerId: { readonly type: "string"; }; }; }, { readonly $ref: "#/components/schemas/InfoEvseItem"; }]; }; readonly InfoMultiResponse: { readonly type: "object"; readonly properties: { readonly containerId: { readonly type: "string"; }; readonly evseCount: { readonly type: "integer"; }; readonly evses: { readonly type: "array"; readonly items: { readonly $ref: "#/components/schemas/InfoEvseItem"; }; }; }; }; readonly StatusEvseItem: { readonly type: "object"; readonly properties: { readonly chargerId: { readonly type: "string"; }; readonly evseId: { readonly type: "string"; }; readonly connected: { readonly type: "boolean"; }; readonly connectors: { readonly type: "array"; readonly items: { readonly $ref: "#/components/schemas/ConnectorStatus"; }; }; readonly location: { readonly $ref: "#/components/schemas/ScopeMeta"; }; readonly company: { readonly $ref: "#/components/schemas/ScopeMeta"; }; readonly environment: { readonly $ref: "#/components/schemas/ScopeMeta"; }; }; }; readonly StatusSingleResponse: { readonly allOf: readonly [{ readonly type: "object"; readonly properties: { readonly containerId: { readonly type: "string"; }; }; }, { readonly $ref: "#/components/schemas/StatusEvseItem"; }]; }; readonly StatusMultiResponse: { readonly type: "object"; readonly properties: { readonly containerId: { readonly type: "string"; }; readonly evseCount: { readonly type: "integer"; }; readonly evses: { readonly type: "array"; readonly items: { readonly $ref: "#/components/schemas/StatusEvseItem"; }; }; }; }; readonly ConnectorListResponse: { readonly type: "object"; readonly properties: { readonly connectors: { readonly type: "array"; readonly items: { readonly $ref: "#/components/schemas/ConnectorStatus"; }; }; readonly totalConnectors: { readonly type: "integer"; }; readonly chargerId: { readonly type: "string"; }; readonly evseId: { readonly type: "string"; }; readonly containerId: { readonly type: "string"; }; }; }; readonly ConnectorDetailResponse: { readonly allOf: readonly [{ readonly $ref: "#/components/schemas/ConnectorStatus"; }, { readonly type: "object"; readonly properties: { readonly chargerId: { readonly type: "string"; }; readonly evseId: { readonly type: "string"; }; readonly containerId: { readonly type: "string"; }; readonly power: { readonly $ref: "#/components/schemas/PowerProfile"; }; readonly timestamp: { readonly type: "string"; readonly format: "date-time"; }; }; }]; }; readonly TransactionsResponse: { readonly type: "object"; readonly properties: { readonly transactions: { readonly type: "array"; readonly items: { readonly type: "object"; readonly properties: { readonly transactionId: { readonly type: "integer"; }; readonly connectorId: { readonly type: "integer"; }; readonly state: { readonly $ref: "#/components/schemas/ConnectorState"; }; readonly chargerId: { readonly type: "string"; }; readonly evseId: { readonly type: "string"; }; readonly containerId: { readonly type: "string"; }; readonly power: { readonly $ref: "#/components/schemas/PowerProfile"; }; readonly timestamp: { readonly type: "string"; readonly format: "date-time"; }; }; }; }; readonly count: { readonly type: "integer"; }; }; }; }; }; readonly 'x-asyncapi-inspired': { readonly channelMap: { readonly 'evse.{evseId}.status.changed': { readonly direction: "publish"; readonly summary: "Connector and station status transitions"; }; readonly 'evse.{evseId}.meter.values': { readonly direction: "publish"; readonly summary: "Meter snapshots emitted by CP simulation"; }; readonly 'evse.{evseId}.command.remote-start': { readonly direction: "subscribe"; readonly summary: "Remote start command flow"; }; readonly 'evse.{evseId}.command.remote-stop': { readonly direction: "subscribe"; readonly summary: "Remote stop command flow"; }; }; }; };