From 47cf0c84c23355ef2cade79a3402ef4c320868ff Mon Sep 17 00:00:00 2001 From: Jared Newell Date: Wed, 17 Jan 2024 15:35:30 +0100 Subject: [PATCH 1/4] changelog and readme updated --- CHANGELOG.md | 2 + README.rst | 27 +- docs/v201/Changelog OCPP 2.0 - 2.0.1.pdf | Bin 299121 -> 0 bytes examples/v20/central_system.py | 78 ---- examples/v20/charge_point.py | 53 --- ocpp/v20/__init__.py | 8 - ocpp/v20/call.py | 436 ------------------ ocpp/v20/call_result.py | 356 -------------- ocpp/v20/schemas/AuthorizeRequest_v1p0.json | 132 ------ ocpp/v20/schemas/AuthorizeResponse_v1p0.json | 153 ------ .../schemas/BootNotificationRequest_v1p0.json | 80 ---- .../BootNotificationResponse_v1p0.json | 29 -- .../CancelReservationRequest_v1p0.json | 14 - .../CancelReservationResponse_v1p0.json | 19 - .../CertificateSignedRequest_v1p0.json | 28 -- .../CertificateSignedResponse_v1p0.json | 19 - .../ChangeAvailabilityRequest_v1p0.json | 23 - .../ChangeAvailabilityResponse_v1p0.json | 20 - ocpp/v20/schemas/ClearCacheRequest_v1p0.json | 6 - ocpp/v20/schemas/ClearCacheResponse_v1p0.json | 19 - .../ClearChargingProfileRequest_v1p0.json | 42 -- .../ClearChargingProfileResponse_v1p0.json | 19 - .../ClearDisplayMessageRequest_v1p0.json | 14 - .../ClearDisplayMessageResponse_v1p0.json | 19 - .../ClearVariableMonitoringRequest_v1p0.json | 19 - .../ClearVariableMonitoringResponse_v1p0.json | 47 -- .../ClearedChargingLimitRequest_v1p0.json | 24 - .../ClearedChargingLimitResponse_v1p0.json | 6 - ocpp/v20/schemas/CostUpdatedRequest_v1p0.json | 19 - .../v20/schemas/CostUpdatedResponse_v1p0.json | 6 - .../CustomerInformationRequest_v1p0.json | 129 ------ .../CustomerInformationResponse_v1p0.json | 20 - .../v20/schemas/DataTransferRequest_v1p0.json | 20 - .../schemas/DataTransferResponse_v1p0.json | 22 - .../DeleteCertificateRequest_v1p0.json | 53 --- .../DeleteCertificateResponse_v1p0.json | 20 - ...irmwareStatusNotificationRequest_v1p0.json | 39 -- ...rmwareStatusNotificationResponse_v1p0.json | 6 - .../Get15118EVCertificateRequest_v1p0.json | 20 - .../Get15118EVCertificateResponse_v1p0.json | 61 --- .../schemas/GetBaseReportRequest_v1p0.json | 24 - .../schemas/GetBaseReportResponse_v1p0.json | 20 - .../GetCertificateStatusRequest_v1p0.json | 57 --- .../GetCertificateStatusResponse_v1p0.json | 23 - .../GetChargingProfilesRequest_v1p0.json | 72 --- .../GetChargingProfilesResponse_v1p0.json | 19 - .../GetCompositeScheduleRequest_v1p0.json | 26 -- .../GetCompositeScheduleResponse_v1p0.json | 107 ----- .../GetDisplayMessagesRequest_v1p0.json | 41 -- .../GetDisplayMessagesResponse_v1p0.json | 19 - ...etInstalledCertificateIdsRequest_v1p0.json | 23 - ...tInstalledCertificateIdsResponse_v1p0.json | 69 --- .../GetLocalListVersionRequest_v1p0.json | 6 - .../GetLocalListVersionResponse_v1p0.json | 14 - ocpp/v20/schemas/GetLogRequest_v1p0.json | 60 --- ocpp/v20/schemas/GetLogResponse_v1p0.json | 24 - .../GetMonitoringReportRequest_v1p0.json | 111 ----- .../GetMonitoringReportResponse_v1p0.json | 20 - ocpp/v20/schemas/GetReportRequest_v1p0.json | 112 ----- ocpp/v20/schemas/GetReportResponse_v1p0.json | 20 - .../GetTransactionStatusRequest_v1p0.json | 12 - .../GetTransactionStatusResponse_v1p0.json | 17 - .../v20/schemas/GetVariablesRequest_v1p0.json | 107 ----- .../schemas/GetVariablesResponse_v1p0.json | 126 ----- ocpp/v20/schemas/HeartbeatRequest_v1p0.json | 6 - ocpp/v20/schemas/HeartbeatResponse_v1p0.json | 15 - .../InstallCertificateRequest_v1p0.json | 28 -- .../InstallCertificateResponse_v1p0.json | 24 - .../LogStatusNotificationRequest_v1p0.json | 28 -- .../LogStatusNotificationResponse_v1p0.json | 6 - ocpp/v20/schemas/MeterValuesRequest_v1p0.json | 211 --------- .../v20/schemas/MeterValuesResponse_v1p0.json | 6 - ...otifyCentralChargingNeedsRequest_v1p0.json | 190 -------- ...tifyCentralChargingNeedsResponse_v1p0.json | 19 - .../NotifyChargingLimitRequest_v1p0.json | 116 ----- .../NotifyChargingLimitResponse_v1p0.json | 6 - ...NotifyCustomerInformationRequest_v1p0.json | 31 -- ...otifyCustomerInformationResponse_v1p0.json | 6 - .../NotifyDisplayMessagesRequest_v1p0.json | 156 ------- .../NotifyDisplayMessagesResponse_v1p0.json | 6 - .../NotifyEVChargingNeedsRequest_v1p0.json | 124 ----- .../NotifyEVChargingNeedsResponse_v1p0.json | 20 - .../NotifyEVChargingScheduleRequest_v1p0.json | 87 ---- ...NotifyEVChargingScheduleResponse_v1p0.json | 19 - ocpp/v20/schemas/NotifyEventRequest_v1p0.json | 192 -------- .../v20/schemas/NotifyEventResponse_v1p0.json | 6 - .../NotifyMonitoringReportRequest_v1p0.json | 159 ------- .../NotifyMonitoringReportResponse_v1p0.json | 6 - .../v20/schemas/NotifyReportRequest_v1p0.json | 215 --------- .../schemas/NotifyReportResponse_v1p0.json | 6 - .../schemas/PublishFirmwareRequest_v1p0.json | 23 - .../schemas/PublishFirmwareResponse_v1p0.json | 19 - ...irmwareStatusNotificationRequest_v1p0.json | 30 -- ...rmwareStatusNotificationResponse_v1p0.json | 6 - .../Renegotiate15118ScheduleRequest_v1p0.json | 32 -- ...Renegotiate15118ScheduleResponse_v1p0.json | 19 - .../ReportChargingProfilesRequest_v1p0.json | 182 -------- .../ReportChargingProfilesResponse_v1p0.json | 6 - .../RequestStartTransactionRequest_v1p0.json | 221 --------- .../RequestStartTransactionResponse_v1p0.json | 23 - .../RequestStopTransactionRequest_v1p0.json | 15 - .../RequestStopTransactionResponse_v1p0.json | 19 - .../ReservationStatusUpdateRequest_v1p0.json | 23 - .../ReservationStatusUpdateResponse_v1p0.json | 6 - ocpp/v20/schemas/ReserveNowRequest_v1p0.json | 150 ------ ocpp/v20/schemas/ReserveNowResponse_v1p0.json | 22 - ocpp/v20/schemas/ResetRequest_v1p0.json | 19 - ocpp/v20/schemas/ResetResponse_v1p0.json | 20 - ...SecurityEventNotificationRequest_v1p0.json | 40 -- ...ecurityEventNotificationResponse_v1p0.json | 6 - .../schemas/SendLocalListRequest_v1p0.json | 210 --------- .../schemas/SendLocalListResponse_v1p0.json | 20 - .../SetChargingProfileRequest_v1p0.json | 157 ------- .../SetChargingProfileResponse_v1p0.json | 19 - .../SetDisplayMessageRequest_v1p0.json | 143 ------ .../SetDisplayMessageResponse_v1p0.json | 23 - .../SetMonitoringBaseRequest_v1p0.json | 20 - .../SetMonitoringBaseResponse_v1p0.json | 20 - .../SetMonitoringLevelRequest_v1p0.json | 15 - .../SetMonitoringLevelResponse_v1p0.json | 20 - .../SetNetworkProfileRequest_v1p0.json | 181 -------- .../SetNetworkProfileResponse_v1p0.json | 20 - .../SetVariableMonitoringRequest_v1p0.json | 122 ----- .../SetVariableMonitoringResponse_v1p0.json | 132 ------ .../v20/schemas/SetVariablesRequest_v1p0.json | 112 ----- .../schemas/SetVariablesResponse_v1p0.json | 125 ----- .../schemas/SignCertificateRequest_v1p0.json | 23 - .../schemas/SignCertificateResponse_v1p0.json | 19 - .../StatusNotificationRequest_v1p0.json | 35 -- .../StatusNotificationResponse_v1p0.json | 6 - .../schemas/TransactionEventRequest_v1p0.json | 414 ----------------- .../TransactionEventResponse_v1p0.json | 135 ------ .../schemas/TriggerMessageRequest_v1p0.json | 50 -- .../schemas/TriggerMessageResponse_v1p0.json | 20 - .../schemas/UnlockConnectorRequest_v1p0.json | 18 - .../schemas/UnlockConnectorResponse_v1p0.json | 19 - .../UnpublishFirmwareRequest_v1p0.json | 15 - .../UnpublishFirmwareResponse_v1p0.json | 20 - .../Update15118EVCertificateRequest_v1p0.json | 20 - ...Update15118EVCertificateResponse_v1p0.json | 23 - .../schemas/UpdateFirmwareRequest_v1p0.json | 57 --- .../schemas/UpdateFirmwareResponse_v1p0.json | 20 - tests/v20/conftest.py | 75 --- tests/v20/test_v20_charge_point.py | 120 ----- 144 files changed, 22 insertions(+), 8211 deletions(-) delete mode 100755 docs/v201/Changelog OCPP 2.0 - 2.0.1.pdf delete mode 100644 examples/v20/central_system.py delete mode 100644 examples/v20/charge_point.py delete mode 100644 ocpp/v20/__init__.py delete mode 100644 ocpp/v20/call.py delete mode 100644 ocpp/v20/call_result.py delete mode 100644 ocpp/v20/schemas/AuthorizeRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/AuthorizeResponse_v1p0.json delete mode 100644 ocpp/v20/schemas/BootNotificationRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/BootNotificationResponse_v1p0.json delete mode 100644 ocpp/v20/schemas/CancelReservationRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/CancelReservationResponse_v1p0.json delete mode 100644 ocpp/v20/schemas/CertificateSignedRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/CertificateSignedResponse_v1p0.json delete mode 100644 ocpp/v20/schemas/ChangeAvailabilityRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/ChangeAvailabilityResponse_v1p0.json delete mode 100644 ocpp/v20/schemas/ClearCacheRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/ClearCacheResponse_v1p0.json delete mode 100644 ocpp/v20/schemas/ClearChargingProfileRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/ClearChargingProfileResponse_v1p0.json delete mode 100644 ocpp/v20/schemas/ClearDisplayMessageRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/ClearDisplayMessageResponse_v1p0.json delete mode 100644 ocpp/v20/schemas/ClearVariableMonitoringRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/ClearVariableMonitoringResponse_v1p0.json delete mode 100644 ocpp/v20/schemas/ClearedChargingLimitRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/ClearedChargingLimitResponse_v1p0.json delete mode 100644 ocpp/v20/schemas/CostUpdatedRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/CostUpdatedResponse_v1p0.json delete mode 100644 ocpp/v20/schemas/CustomerInformationRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/CustomerInformationResponse_v1p0.json delete mode 100644 ocpp/v20/schemas/DataTransferRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/DataTransferResponse_v1p0.json delete mode 100644 ocpp/v20/schemas/DeleteCertificateRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/DeleteCertificateResponse_v1p0.json delete mode 100644 ocpp/v20/schemas/FirmwareStatusNotificationRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/FirmwareStatusNotificationResponse_v1p0.json delete mode 100644 ocpp/v20/schemas/Get15118EVCertificateRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/Get15118EVCertificateResponse_v1p0.json delete mode 100644 ocpp/v20/schemas/GetBaseReportRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/GetBaseReportResponse_v1p0.json delete mode 100644 ocpp/v20/schemas/GetCertificateStatusRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/GetCertificateStatusResponse_v1p0.json delete mode 100644 ocpp/v20/schemas/GetChargingProfilesRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/GetChargingProfilesResponse_v1p0.json delete mode 100644 ocpp/v20/schemas/GetCompositeScheduleRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/GetCompositeScheduleResponse_v1p0.json delete mode 100644 ocpp/v20/schemas/GetDisplayMessagesRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/GetDisplayMessagesResponse_v1p0.json delete mode 100644 ocpp/v20/schemas/GetInstalledCertificateIdsRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/GetInstalledCertificateIdsResponse_v1p0.json delete mode 100644 ocpp/v20/schemas/GetLocalListVersionRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/GetLocalListVersionResponse_v1p0.json delete mode 100644 ocpp/v20/schemas/GetLogRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/GetLogResponse_v1p0.json delete mode 100644 ocpp/v20/schemas/GetMonitoringReportRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/GetMonitoringReportResponse_v1p0.json delete mode 100644 ocpp/v20/schemas/GetReportRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/GetReportResponse_v1p0.json delete mode 100644 ocpp/v20/schemas/GetTransactionStatusRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/GetTransactionStatusResponse_v1p0.json delete mode 100644 ocpp/v20/schemas/GetVariablesRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/GetVariablesResponse_v1p0.json delete mode 100644 ocpp/v20/schemas/HeartbeatRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/HeartbeatResponse_v1p0.json delete mode 100644 ocpp/v20/schemas/InstallCertificateRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/InstallCertificateResponse_v1p0.json delete mode 100644 ocpp/v20/schemas/LogStatusNotificationRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/LogStatusNotificationResponse_v1p0.json delete mode 100644 ocpp/v20/schemas/MeterValuesRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/MeterValuesResponse_v1p0.json delete mode 100644 ocpp/v20/schemas/NotifyCentralChargingNeedsRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/NotifyCentralChargingNeedsResponse_v1p0.json delete mode 100644 ocpp/v20/schemas/NotifyChargingLimitRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/NotifyChargingLimitResponse_v1p0.json delete mode 100644 ocpp/v20/schemas/NotifyCustomerInformationRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/NotifyCustomerInformationResponse_v1p0.json delete mode 100644 ocpp/v20/schemas/NotifyDisplayMessagesRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/NotifyDisplayMessagesResponse_v1p0.json delete mode 100644 ocpp/v20/schemas/NotifyEVChargingNeedsRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/NotifyEVChargingNeedsResponse_v1p0.json delete mode 100644 ocpp/v20/schemas/NotifyEVChargingScheduleRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/NotifyEVChargingScheduleResponse_v1p0.json delete mode 100644 ocpp/v20/schemas/NotifyEventRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/NotifyEventResponse_v1p0.json delete mode 100644 ocpp/v20/schemas/NotifyMonitoringReportRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/NotifyMonitoringReportResponse_v1p0.json delete mode 100644 ocpp/v20/schemas/NotifyReportRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/NotifyReportResponse_v1p0.json delete mode 100644 ocpp/v20/schemas/PublishFirmwareRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/PublishFirmwareResponse_v1p0.json delete mode 100644 ocpp/v20/schemas/PublishFirmwareStatusNotificationRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/PublishFirmwareStatusNotificationResponse_v1p0.json delete mode 100644 ocpp/v20/schemas/Renegotiate15118ScheduleRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/Renegotiate15118ScheduleResponse_v1p0.json delete mode 100644 ocpp/v20/schemas/ReportChargingProfilesRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/ReportChargingProfilesResponse_v1p0.json delete mode 100644 ocpp/v20/schemas/RequestStartTransactionRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/RequestStartTransactionResponse_v1p0.json delete mode 100644 ocpp/v20/schemas/RequestStopTransactionRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/RequestStopTransactionResponse_v1p0.json delete mode 100644 ocpp/v20/schemas/ReservationStatusUpdateRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/ReservationStatusUpdateResponse_v1p0.json delete mode 100644 ocpp/v20/schemas/ReserveNowRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/ReserveNowResponse_v1p0.json delete mode 100644 ocpp/v20/schemas/ResetRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/ResetResponse_v1p0.json delete mode 100644 ocpp/v20/schemas/SecurityEventNotificationRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/SecurityEventNotificationResponse_v1p0.json delete mode 100644 ocpp/v20/schemas/SendLocalListRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/SendLocalListResponse_v1p0.json delete mode 100644 ocpp/v20/schemas/SetChargingProfileRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/SetChargingProfileResponse_v1p0.json delete mode 100644 ocpp/v20/schemas/SetDisplayMessageRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/SetDisplayMessageResponse_v1p0.json delete mode 100644 ocpp/v20/schemas/SetMonitoringBaseRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/SetMonitoringBaseResponse_v1p0.json delete mode 100644 ocpp/v20/schemas/SetMonitoringLevelRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/SetMonitoringLevelResponse_v1p0.json delete mode 100644 ocpp/v20/schemas/SetNetworkProfileRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/SetNetworkProfileResponse_v1p0.json delete mode 100644 ocpp/v20/schemas/SetVariableMonitoringRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/SetVariableMonitoringResponse_v1p0.json delete mode 100644 ocpp/v20/schemas/SetVariablesRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/SetVariablesResponse_v1p0.json delete mode 100644 ocpp/v20/schemas/SignCertificateRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/SignCertificateResponse_v1p0.json delete mode 100644 ocpp/v20/schemas/StatusNotificationRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/StatusNotificationResponse_v1p0.json delete mode 100644 ocpp/v20/schemas/TransactionEventRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/TransactionEventResponse_v1p0.json delete mode 100644 ocpp/v20/schemas/TriggerMessageRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/TriggerMessageResponse_v1p0.json delete mode 100644 ocpp/v20/schemas/UnlockConnectorRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/UnlockConnectorResponse_v1p0.json delete mode 100644 ocpp/v20/schemas/UnpublishFirmwareRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/UnpublishFirmwareResponse_v1p0.json delete mode 100644 ocpp/v20/schemas/Update15118EVCertificateRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/Update15118EVCertificateResponse_v1p0.json delete mode 100644 ocpp/v20/schemas/UpdateFirmwareRequest_v1p0.json delete mode 100644 ocpp/v20/schemas/UpdateFirmwareResponse_v1p0.json delete mode 100644 tests/v20/conftest.py delete mode 100644 tests/v20/test_v20_charge_point.py diff --git a/CHANGELOG.md b/CHANGELOG.md index 06e14504c..a2d93d00c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,7 @@ # Change log +- [#498](https://github.com/mobilityhouse/ocpp/issues/498) Remove support for OCPP 2.0 + ## 0.26.0 (2024-01-17) - [#544](https://github.com/mobilityhouse/ocpp/issues/544) ocpp/charge_point.py - Pass `Call.unique_id` to the `on` and `after` routing handlers. diff --git a/README.rst b/README.rst index 0df940525..673ee62bf 100644 --- a/README.rst +++ b/README.rst @@ -11,11 +11,23 @@ OCPP ---- Python package implementing the JSON version of the Open Charge Point Protocol -(OCPP). Currently OCPP 1.6 (errata v4), OCPP 2.0 and OCPP 2.0.1 (Final Version) +(OCPP). Currently OCPP 1.6 (errata v4), OCPP 2.0.1 (Edition 2 FINAL, 2022-12-15) are supported. You can find the documentation on `rtd`_. +The purpose of this library is to provide the building blocks to construct a +charging station/charge point and/or charging station management system +(CSMS)/central system. The library does not provide a completed solution, as any +implementation is specific for its intended use. The documents in this library +should be inspected, as these documents provided guidance on how best to +build a complete solution. + +Note: "OCPP 2.0.1 contains fixes for all the known issues, to date, not only +the fixes to the messages. This version replaces OCPP 2.0. OCA advises +implementers of OCPP to no longer implement OCPP 2.0 and only use version +2.0.1 going forward." + Installation ------------ @@ -34,8 +46,9 @@ Or clone the project and install it manually using: Quick start ----------- -Below you can find examples on how to create a simple OCPP 2.0 central system as -well as an OCPP 2.0 charge point. +Below you can find examples on how to create a simple OCPP 1.6 or 2.0.1 Central +System/CSMS as well as the respective OCPP 1.6 or 2.0.1 +Charging Station/Charge Point. .. note:: @@ -45,11 +58,11 @@ well as an OCPP 2.0 charge point. $ pip install websockets -Central system +Charging Station Management System (CSMS) / Central System ~~~~~~~~~~~~~~ -The code snippet below creates a simple OCPP 2.0 central system which is able -to handle BootNotification calls. You can find a detailed explanation of the +The code snippet below creates a simple OCPP 2.0.1 CSMS which +is able to handle BootNotification calls. You can find a detailed explanation of the code in the `Central System documentation`_. @@ -121,7 +134,7 @@ code in the `Central System documentation`_. if __name__ == '__main__': asyncio.run(main()) -Charge point +Charging station / Charge point ~~~~~~~~~~~~ .. code-block:: python diff --git a/docs/v201/Changelog OCPP 2.0 - 2.0.1.pdf b/docs/v201/Changelog OCPP 2.0 - 2.0.1.pdf deleted file mode 100755 index 0470a6cddb16ca7fb5021ac831b49781d582bf82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 299121 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�pqjrtv?-?As^c@466E>qS5Fg_ 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 Um}d*Yfk8YRkB#lNvK-$30Yl_B>i_@% diff --git a/examples/v20/central_system.py b/examples/v20/central_system.py deleted file mode 100644 index e2823423a..000000000 --- a/examples/v20/central_system.py +++ /dev/null @@ -1,78 +0,0 @@ -import asyncio -import logging -from datetime import datetime - -try: - import websockets -except ModuleNotFoundError: - print("This example relies on the 'websockets' package.") - print("Please install it by running: ") - print() - print(" $ pip install websockets") - import sys - - sys.exit(1) - -from ocpp.routing import on -from ocpp.v20 import ChargePoint as cp -from ocpp.v20 import call_result - -logging.basicConfig(level=logging.INFO) - - -class ChargePoint(cp): - @on("BootNotification") - def on_boot_notification(self, charging_station, reason, **kwargs): - return call_result.BootNotificationPayload( - current_time=datetime.utcnow().isoformat(), interval=10, status="Accepted" - ) - - @on("Heartbeat") - def on_heartbeat(self): - print("Got a Heartbeat!") - return call_result.HeartbeatPayload( - current_time=datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%S") + "Z" - ) - - -async def on_connect(websocket, path): - """For every new charge point that connects, create a ChargePoint - instance and start listening for messages. - """ - try: - requested_protocols = websocket.request_headers["Sec-WebSocket-Protocol"] - except KeyError: - logging.error("Client hasn't requested any Subprotocol. Closing Connection") - return await websocket.close() - if websocket.subprotocol: - logging.info("Protocols Matched: %s", websocket.subprotocol) - else: - # In the websockets lib if no subprotocols are supported by the - # client and the server, it proceeds without a subprotocol, - # so we have to manually close the connection. - logging.warning( - "Protocols Mismatched | Expected Subprotocols: %s," - " but client supports %s | Closing connection", - websocket.available_subprotocols, - requested_protocols, - ) - return await websocket.close() - - charge_point_id = path.strip("/") - cp = ChargePoint(charge_point_id, websocket) - - await cp.start() - - -async def main(): - server = await websockets.serve( - on_connect, "0.0.0.0", 9000, subprotocols=["ocpp2.0"] - ) - - logging.info("Server Started listening to new connections...") - await server.wait_closed() - - -if __name__ == "__main__": - # asyncio.run() is used when running this example with Python >= 3.7v - asyncio.run(main()) diff --git a/examples/v20/charge_point.py b/examples/v20/charge_point.py deleted file mode 100644 index a897597c9..000000000 --- a/examples/v20/charge_point.py +++ /dev/null @@ -1,53 +0,0 @@ -import asyncio -import logging - -try: - import websockets -except ModuleNotFoundError: - print("This example relies on the 'websockets' package.") - print("Please install it by running: ") - print() - print(" $ pip install websockets") - import sys - - sys.exit(1) - - -from ocpp.v20 import ChargePoint as cp -from ocpp.v20 import call - -logging.basicConfig(level=logging.INFO) - - -class ChargePoint(cp): - async def send_heartbeat(self, interval): - request = call.HeartbeatPayload() - while True: - await self.call(request) - await asyncio.sleep(interval) - - async def send_boot_notification(self): - request = call.BootNotificationPayload( - charging_station={"model": "Wallbox XYZ", "vendor_name": "anewone"}, - reason="PowerUp", - ) - response = await self.call(request) - - if response.status == "Accepted": - print("Connected to central system.") - await self.send_heartbeat(response.interval) - - -async def main(): - async with websockets.connect( - "ws://localhost:9000/CP_1", subprotocols=["ocpp2.0"] - ) as ws: - - cp = ChargePoint("CP_1", ws) - - await asyncio.gather(cp.start(), cp.send_boot_notification()) - - -if __name__ == "__main__": - # asyncio.run() is used when running this example with Python >= 3.7v - asyncio.run(main()) diff --git a/ocpp/v20/__init__.py b/ocpp/v20/__init__.py deleted file mode 100644 index f054fc49f..000000000 --- a/ocpp/v20/__init__.py +++ /dev/null @@ -1,8 +0,0 @@ -from ocpp.charge_point import ChargePoint as cp -from ocpp.v20 import call, call_result - - -class ChargePoint(cp): - _call = call - _call_result = call_result - _ocpp_version = "2.0" diff --git a/ocpp/v20/call.py b/ocpp/v20/call.py deleted file mode 100644 index 13ba974cb..000000000 --- a/ocpp/v20/call.py +++ /dev/null @@ -1,436 +0,0 @@ -from dataclasses import dataclass -from typing import Any, Dict, List, Optional - - -@dataclass -class AuthorizePayload: - id_token: Dict - _15118_certificate_hash_data: Optional[List] = None - evse_id: Optional[List] = None - - -@dataclass -class BootNotificationPayload: - charging_station: Dict - reason: str - - -@dataclass -class CancelReservationPayload: - reservation_id: int - - -@dataclass -class CertificateSignedPayload: - cert: List - type_of_certificate: Optional[str] = None - - -@dataclass -class ChangeAvailabilityPayload: - evse_id: int - operational_status: str - - -@dataclass -class ClearCachePayload: - pass - - -@dataclass -class ClearChargingProfilePayload: - evse_id: Optional[int] = None - charging_profile: Optional[Dict] = None - - -@dataclass -class ClearDisplayMessagePayload: - id: int - - -@dataclass -class ClearVariableMonitoringPayload: - id: List - - -@dataclass -class ClearedChargingLimitPayload: - charging_limit_source: str - evse_id: Optional[int] = None - - -@dataclass -class CostUpdatedPayload: - total_cost: int - transaction_id: str - - -@dataclass -class CustomerInformationPayload: - request_id: int - report: bool - clear: bool - customer_certificate: Optional[Dict] = None - id_token: Optional[Dict] = None - customer_identifier: Optional[str] = None - - -@dataclass -class DataTransferPayload: - vendor_id: str - message_id: Optional[str] = None - data: Any = None - - -@dataclass -class DeleteCertificatePayload: - certificate_hash_data: Dict - - -@dataclass -class FirmwareStatusNotificationPayload: - status: str - request_id: int - - -@dataclass -class Get15118EVCertificatePayload: - _15118_schema_version: str - exi_request: str - - -@dataclass -class GetBaseReportPayload: - request_id: int - report_base: str - - -@dataclass -class GetCertificateStatusPayload: - ocsp_request_data: Dict - - -@dataclass -class GetChargingProfilesPayload: - charging_profile: Dict - request_id: Optional[int] = None - evse_id: Optional[int] = None - - -@dataclass -class GetCompositeSchedulePayload: - duration: int - evse_id: int - charging_rate_unit: Optional[str] = None - - -@dataclass -class GetDisplayMessagesPayload: - request_id: int - priority: Optional[str] = None - state: Optional[str] = None - id: Optional[List] = None - - -@dataclass -class GetInstalledCertificateIdsPayload: - type_of_certificate: str - - -@dataclass -class GetLocalListVersionPayload: - pass - - -@dataclass -class GetLogPayload: - log: Dict - log_type: str - request_id: int - retries: Optional[int] = None - retry_interval: Optional[int] = None - - -@dataclass -class GetMonitoringReportPayload: - component_variable: Optional[List] = None - request_id: Optional[int] = None - monitoring_criteria: Optional[List] = None - - -@dataclass -class GetReportPayload: - component_variable: Optional[List] = None - request_id: Optional[int] = None - component_criteria: Optional[List] = None - - -@dataclass -class GetTransactionStatusPayload: - transaction_id: Optional[str] = None - - -@dataclass -class GetVariablesPayload: - get_variable_data: List - - -@dataclass -class HeartbeatPayload: - pass - - -@dataclass -class InstallCertificatePayload: - certificate_type: str - certificate: str - - -@dataclass -class LogStatusNotificationPayload: - status: str - request_id: int - - -@dataclass -class MeterValuesPayload: - evse_id: int - meter_value: List - - -@dataclass -class NotifyCentralChargingNeedsPayload: - evse_id: int - sa_schedule: List - - -@dataclass -class NotifyChargingLimitPayload: - charging_limit: Dict - charging_schedule: Optional[List] = None - evse_id: Optional[int] = None - - -@dataclass -class NotifyCustomerInformationPayload: - data: str - tbc: bool - seq_no: int - generated_at: str - request_id: Optional[int] = None - - -@dataclass -class NotifyDisplayMessagesPayload: - message_info: List - request_id: int - tbc: bool - - -@dataclass -class NotifyEVChargingNeedsPayload: - charging_needs: Dict - evse_id: int - max_schedule_tuples: Optional[int] = None - - -@dataclass -class NotifyEVChargingSchedulePayload: - time_base: str - charging_schedule: Dict - evse_id: int - - -@dataclass -class NotifyEventPayload: - generated_at: str - tbc: bool - seq_no: int - event_data: List - - -@dataclass -class NotifyMonitoringReportPayload: - monitor: List - tbc: bool - seq_no: int - generated_at: str - request_id: Optional[int] = None - - -@dataclass -class NotifyReportPayload: - generated_at: str - report_data: List - tbc: bool - seq_no: int - request_id: Optional[int] = None - - -@dataclass -class PublishFirmwarePayload: - location: str - checksum: str - retries: Optional[int] = None - - -@dataclass -class PublishFirmwareStatusNotificationPayload: - status: str - location: Optional[str] = None - - -@dataclass -class Renegotiate15118SchedulePayload: - evse: Dict - - -@dataclass -class ReportChargingProfilesPayload: - charging_limit_source: str - charging_profile: List - evse_id: int - request_id: Optional[int] = None - tbc: Optional[bool] = None - - -@dataclass -class RequestStartTransactionPayload: - id_token: Dict - remote_start_id: int - evse_id: Optional[int] = None - charging_profile: Optional[Dict] = None - - -@dataclass -class RequestStopTransactionPayload: - transaction_id: str - - -@dataclass -class ReservationStatusUpdatePayload: - reservation_id: int - reservation_update_status: str - - -@dataclass -class ReserveNowPayload: - id_token: Dict - reservation: Dict - group_id_token: Optional[Dict] = None - - -@dataclass -class ResetPayload: - type: str - - -@dataclass -class SecurityEventNotificationPayload: - type: str - timestamp: str - - -@dataclass -class SendLocalListPayload: - version_number: int - update_type: str - local_authorization_list: Optional[List] = None - - -@dataclass -class SetChargingProfilePayload: - evse_id: int - charging_profile: Dict - - -@dataclass -class SetDisplayMessagePayload: - message: Dict - - -@dataclass -class SetMonitoringBasePayload: - monitoring_base: str - - -@dataclass -class SetMonitoringLevelPayload: - severity: int - - -@dataclass -class SetNetworkProfilePayload: - configuration_slot: int - connection_data: Dict - - -@dataclass -class SetVariableMonitoringPayload: - set_monitoring_data: List - - -@dataclass -class SetVariablesPayload: - set_variable_data: List - - -@dataclass -class SignCertificatePayload: - csr: str - type_of_certificate: Optional[str] = None - - -@dataclass -class StatusNotificationPayload: - timestamp: str - connector_status: str - evse_id: int - connector_id: int - - -@dataclass -class TransactionEventPayload: - event_type: str - timestamp: str - trigger_reason: str - seq_no: int - transaction_data: Dict - meter_value: Optional[List] = None - offline: Optional[bool] = None - number_of_phases_used: Optional[int] = None - cable_max_current: Optional[int] = None - reservation_id: Optional[int] = None - evse: Optional[Dict] = None - id_token: Optional[Dict] = None - - -@dataclass -class TriggerMessagePayload: - requested_message: str - evse: Optional[Dict] = None - - -@dataclass -class UnlockConnectorPayload: - evse_id: int - connector_id: int - - -@dataclass -class UnpublishFirmwarePayload: - checksum: str - - -@dataclass -class Update15118EVCertificatePayload: - _15118_schema_version: str - exi_request: str - - -@dataclass -class UpdateFirmwarePayload: - request_id: int - firmware: Dict - retries: Optional[int] = None - retry_interval: Optional[int] = None diff --git a/ocpp/v20/call_result.py b/ocpp/v20/call_result.py deleted file mode 100644 index 85dbe38c6..000000000 --- a/ocpp/v20/call_result.py +++ /dev/null @@ -1,356 +0,0 @@ -from dataclasses import dataclass -from typing import Any, Dict, List, Optional - - -@dataclass -class AuthorizePayload: - id_token_info: Dict - certificate_status: Optional[str] = None - evse_id: Optional[List] = None - - -@dataclass -class BootNotificationPayload: - current_time: str - interval: int - status: str - - -@dataclass -class CancelReservationPayload: - status: str - - -@dataclass -class CertificateSignedPayload: - status: str - - -@dataclass -class ChangeAvailabilityPayload: - status: str - - -@dataclass -class ClearCachePayload: - status: str - - -@dataclass -class ClearChargingProfilePayload: - status: str - - -@dataclass -class ClearDisplayMessagePayload: - status: str - - -@dataclass -class ClearVariableMonitoringPayload: - clear_monitoring_result: List - - -@dataclass -class ClearedChargingLimitPayload: - pass - - -@dataclass -class CostUpdatedPayload: - pass - - -@dataclass -class CustomerInformationPayload: - status: str - - -@dataclass -class DataTransferPayload: - status: str - data: Any = None - - -@dataclass -class DeleteCertificatePayload: - status: str - - -@dataclass -class FirmwareStatusNotificationPayload: - pass - - -@dataclass -class Get15118EVCertificatePayload: - status: str - sa_provisioning_certificate_chain: Dict - contract_signature_certificate_chain: Dict - exi_response: str - - -@dataclass -class GetBaseReportPayload: - status: str - - -@dataclass -class GetCertificateStatusPayload: - status: str - ocsp_result: Optional[str] = None - - -@dataclass -class GetChargingProfilesPayload: - status: str - - -@dataclass -class GetCompositeSchedulePayload: - status: str - evse_id: int - schedule: Optional[Dict] = None - - -@dataclass -class GetDisplayMessagesPayload: - status: str - - -@dataclass -class GetInstalledCertificateIdsPayload: - status: str - certificate_hash_data: Optional[List] = None - - -@dataclass -class GetLocalListVersionPayload: - version_number: int - - -@dataclass -class GetLogPayload: - status: str - filename: Optional[str] = None - - -@dataclass -class GetMonitoringReportPayload: - status: str - - -@dataclass -class GetReportPayload: - status: str - - -@dataclass -class GetTransactionStatusPayload: - messages_in_queue: bool - ongoing_indicator: Optional[bool] = None - - -@dataclass -class GetVariablesPayload: - get_variable_result: List - - -@dataclass -class HeartbeatPayload: - current_time: str - - -@dataclass -class InstallCertificatePayload: - status: str - - -@dataclass -class LogStatusNotificationPayload: - pass - - -@dataclass -class MeterValuesPayload: - pass - - -@dataclass -class NotifyCentralChargingNeedsPayload: - status: str - - -@dataclass -class NotifyChargingLimitPayload: - pass - - -@dataclass -class NotifyCustomerInformationPayload: - pass - - -@dataclass -class NotifyDisplayMessagesPayload: - pass - - -@dataclass -class NotifyEVChargingNeedsPayload: - status: str - - -@dataclass -class NotifyEVChargingSchedulePayload: - status: str - - -@dataclass -class NotifyEventPayload: - pass - - -@dataclass -class NotifyMonitoringReportPayload: - pass - - -@dataclass -class NotifyReportPayload: - pass - - -@dataclass -class PublishFirmwarePayload: - status: str - - -@dataclass -class PublishFirmwareStatusNotificationPayload: - pass - - -@dataclass -class Renegotiate15118SchedulePayload: - status: str - - -@dataclass -class ReportChargingProfilesPayload: - pass - - -@dataclass -class RequestStartTransactionPayload: - status: str - transaction_id: Optional[str] = None - - -@dataclass -class RequestStopTransactionPayload: - status: str - - -@dataclass -class ReservationStatusUpdatePayload: - pass - - -@dataclass -class ReserveNowPayload: - status: str - - -@dataclass -class ResetPayload: - status: str - - -@dataclass -class SecurityEventNotificationPayload: - pass - - -@dataclass -class SendLocalListPayload: - status: str - - -@dataclass -class SetChargingProfilePayload: - status: str - - -@dataclass -class SetDisplayMessagePayload: - status: str - - -@dataclass -class SetMonitoringBasePayload: - status: str - - -@dataclass -class SetMonitoringLevelPayload: - status: str - - -@dataclass -class SetNetworkProfilePayload: - status: str - - -@dataclass -class SetVariableMonitoringPayload: - set_monitoring_result: List - - -@dataclass -class SetVariablesPayload: - set_variable_result: List - - -@dataclass -class SignCertificatePayload: - status: str - - -@dataclass -class StatusNotificationPayload: - pass - - -@dataclass -class TransactionEventPayload: - total_cost: Optional[int] = None - charging_priority: Optional[int] = None - id_token_info: Optional[Dict] = None - updated_personal_message: Optional[Dict] = None - - -@dataclass -class TriggerMessagePayload: - status: str - - -@dataclass -class UnlockConnectorPayload: - status: str - - -@dataclass -class UnpublishFirmwarePayload: - status: str - - -@dataclass -class Update15118EVCertificatePayload: - status: str - exi_response: Optional[str] = None - - -@dataclass -class UpdateFirmwarePayload: - status: str diff --git a/ocpp/v20/schemas/AuthorizeRequest_v1p0.json b/ocpp/v20/schemas/AuthorizeRequest_v1p0.json deleted file mode 100644 index 55289fcf2..000000000 --- a/ocpp/v20/schemas/AuthorizeRequest_v1p0.json +++ /dev/null @@ -1,132 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "definitions": { - "HashAlgorithmEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "SHA256", - "SHA384", - "SHA512" - ] - }, - "IdTokenEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Central", - "eMAID", - "ISO14443", - "KeyCode", - "Local", - "NoAuthorization", - "ISO15693" - ] - }, - "AdditionalInfoType": { - "javaType": "AdditionalInfo", - "type": "object", - "additionalProperties": true, - "properties": { - "additionalIdToken": { - "type": "string", - "maxLength": 36 - }, - "type": { - "type": "string", - "maxLength": 50 - } - }, - "required": [ - "additionalIdToken", - "type" - ] - }, - "IdTokenType": { - "javaType": "IdToken", - "type": "object", - "additionalProperties": true, - "properties": { - "additionalInfo": { - "type": "array", - "additionalItems": false, - "items": { - "$ref": "#/definitions/AdditionalInfoType" - }, - "minItems": 1 - }, - "idToken": { - "type": "string", - "maxLength": 36 - }, - "type": { - "$ref": "#/definitions/IdTokenEnumType" - } - }, - "required": [ - "idToken", - "type" - ] - }, - "OCSPRequestDataType": { - "javaType": "OCSPRequestData", - "type": "object", - "additionalProperties": true, - "properties": { - "hashAlgorithm": { - "$ref": "#/definitions/HashAlgorithmEnumType" - }, - "issuerNameHash": { - "type": "string", - "maxLength": 128 - }, - "issuerKeyHash": { - "type": "string", - "maxLength": 128 - }, - "serialNumber": { - "type": "string", - "maxLength": 20 - }, - "responderURL": { - "type": "string", - "maxLength": 512 - } - }, - "required": [ - "hashAlgorithm", - "issuerNameHash", - "issuerKeyHash", - "serialNumber" - ] - } - }, - "type": "object", - "additionalProperties": true, - "properties": { - "15118CertificateHashData": { - "type": "array", - "additionalItems": false, - "items": { - "$ref": "#/definitions/OCSPRequestDataType" - }, - "minItems": 1, - "maxItems": 4 - }, - "idToken": { - "$ref": "#/definitions/IdTokenType" - }, - "evseId": { - "type": "array", - "additionalItems": false, - "items": { - "type": "integer" - }, - "minItems": 1 - } - }, - "required": [ - "idToken" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/AuthorizeResponse_v1p0.json b/ocpp/v20/schemas/AuthorizeResponse_v1p0.json deleted file mode 100644 index 6357990ed..000000000 --- a/ocpp/v20/schemas/AuthorizeResponse_v1p0.json +++ /dev/null @@ -1,153 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "definitions": { - "AuthorizationStatusEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Accepted", - "Blocked", - "ConcurrentTx", - "Expired", - "Invalid", - "NoCredit", - "NotAllowedTypeEVSE", - "NotAtThisLocation", - "NotAtThisTime", - "Unknown" - ] - }, - "CertificateStatusEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Accepted", - "SignatureError", - "CertificateExpired", - "CertificateRevoked", - "NoCertificateAvailable", - "CertChainError", - "ContractCancelled" - ] - }, - "IdTokenEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Central", - "eMAID", - "ISO14443", - "KeyCode", - "Local", - "NoAuthorization", - "ISO15693" - ] - }, - "MessageFormatEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "ASCII", - "HTML", - "URI", - "UTF8" - ] - }, - "GroupIdTokenType": { - "javaType": "GroupIdToken", - "type": "object", - "additionalProperties": true, - "properties": { - "idToken": { - "type": "string", - "maxLength": 36 - }, - "type": { - "$ref": "#/definitions/IdTokenEnumType" - } - }, - "required": [ - "idToken", - "type" - ] - }, - "IdTokenInfoType": { - "javaType": "IdTokenInfo", - "type": "object", - "additionalProperties": true, - "properties": { - "status": { - "$ref": "#/definitions/AuthorizationStatusEnumType" - }, - "cacheExpiryDateTime": { - "type": "string", - "format": "date-time" - }, - "chargingPriority": { - "type": "integer" - }, - "groupIdToken": { - "$ref": "#/definitions/GroupIdTokenType" - }, - "language1": { - "type": "string", - "maxLength": 8 - }, - "language2": { - "type": "string", - "maxLength": 8 - }, - "personalMessage": { - "$ref": "#/definitions/MessageContentType" - } - }, - "required": [ - "status" - ] - }, - "MessageContentType": { - "javaType": "MessageContent", - "type": "object", - "additionalProperties": true, - "properties": { - "format": { - "$ref": "#/definitions/MessageFormatEnumType" - }, - "language": { - "type": "string", - "maxLength": 8 - }, - "content": { - "type": "string", - "maxLength": 512 - } - }, - "required": [ - "format", - "content" - ] - } - }, - "type": "object", - "additionalProperties": true, - "properties": { - "idTokenInfo": { - "$ref": "#/definitions/IdTokenInfoType" - }, - "certificateStatus": { - "$ref": "#/definitions/CertificateStatusEnumType" - }, - "evseId": { - "type": "array", - "additionalItems": false, - "items": { - "type": "integer" - }, - "minItems": 1 - } - }, - "required": [ - "idTokenInfo" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/BootNotificationRequest_v1p0.json b/ocpp/v20/schemas/BootNotificationRequest_v1p0.json deleted file mode 100644 index 39cb2f2a5..000000000 --- a/ocpp/v20/schemas/BootNotificationRequest_v1p0.json +++ /dev/null @@ -1,80 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "definitions": { - "BootReasonEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "ApplicationReset", - "FirmwareUpdate", - "LocalReset", - "PowerUp", - "RemoteReset", - "ScheduledReset", - "Triggered", - "Unknown", - "Watchdog" - ] - }, - "ChargingStationType": { - "javaType": "ChargingStation", - "type": "object", - "additionalProperties": true, - "properties": { - "serialNumber": { - "type": "string", - "maxLength": 20 - }, - "model": { - "type": "string", - "maxLength": 20 - }, - "modem": { - "$ref": "#definitions/ModemType" - }, - "vendorName": { - "type": "string", - "maxLength": 50 - }, - "firmwareVersion": { - "type": "string", - "maxLength": 50 - } - }, - "required": [ - "model", - "vendorName" - ] - }, - "ModemType": { - "javaType": "Modem", - "type": "object", - "additionalProperties": true, - "properties": { - "iccid": { - "type": "string", - "maxLength": 20 - }, - "imsi": { - "type": "string", - "maxLength": 20 - } - } - } - }, - "type": "object", - "additionalProperties": true, - "properties": { - "chargingStation": { - "$ref": "#definitions/ChargingStationType" - }, - "reason": { - "$ref": "#definitions/BootReasonEnumType" - } - }, - "required": [ - "reason", - "chargingStation" - ] -} diff --git a/ocpp/v20/schemas/BootNotificationResponse_v1p0.json b/ocpp/v20/schemas/BootNotificationResponse_v1p0.json deleted file mode 100644 index 67443dedf..000000000 --- a/ocpp/v20/schemas/BootNotificationResponse_v1p0.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "currentTime": { - "type": "string", - "format": "date-time" - }, - "interval": { - "type": "integer" - }, - "status": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Accepted", - "Pending", - "Rejected" - ] - } - }, - "required": [ - "currentTime", - "interval", - "status" - ] -} diff --git a/ocpp/v20/schemas/CancelReservationRequest_v1p0.json b/ocpp/v20/schemas/CancelReservationRequest_v1p0.json deleted file mode 100644 index 5b14f9983..000000000 --- a/ocpp/v20/schemas/CancelReservationRequest_v1p0.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "reservationId": { - "type": "integer" - } - }, - "required": [ - "reservationId" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/CancelReservationResponse_v1p0.json b/ocpp/v20/schemas/CancelReservationResponse_v1p0.json deleted file mode 100644 index 5cd67bdf0..000000000 --- a/ocpp/v20/schemas/CancelReservationResponse_v1p0.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "status": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Accepted", - "Rejected" - ] - } - }, - "required": [ - "status" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/CertificateSignedRequest_v1p0.json b/ocpp/v20/schemas/CertificateSignedRequest_v1p0.json deleted file mode 100644 index 30b364aec..000000000 --- a/ocpp/v20/schemas/CertificateSignedRequest_v1p0.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "cert": { - "type": "array", - "additionalItems": false, - "items": { - "type": "string", - "maxLength": 800 - }, - "minItems": 1 - }, - "typeOfCertificate": { - "type": "string", - "additionalProperties": true, - "enum": [ - "ChargingStationCertificate", - "V2GCertificate" - ] - } - }, - "required": [ - "cert" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/CertificateSignedResponse_v1p0.json b/ocpp/v20/schemas/CertificateSignedResponse_v1p0.json deleted file mode 100644 index 5cd67bdf0..000000000 --- a/ocpp/v20/schemas/CertificateSignedResponse_v1p0.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "status": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Accepted", - "Rejected" - ] - } - }, - "required": [ - "status" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/ChangeAvailabilityRequest_v1p0.json b/ocpp/v20/schemas/ChangeAvailabilityRequest_v1p0.json deleted file mode 100644 index 966cc849a..000000000 --- a/ocpp/v20/schemas/ChangeAvailabilityRequest_v1p0.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "evseId": { - "type": "integer" - }, - "operationalStatus": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Inoperative", - "Operative" - ] - } - }, - "required": [ - "evseId", - "operationalStatus" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/ChangeAvailabilityResponse_v1p0.json b/ocpp/v20/schemas/ChangeAvailabilityResponse_v1p0.json deleted file mode 100644 index e839d6d2d..000000000 --- a/ocpp/v20/schemas/ChangeAvailabilityResponse_v1p0.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "status": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Accepted", - "Rejected", - "Scheduled" - ] - } - }, - "required": [ - "status" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/ClearCacheRequest_v1p0.json b/ocpp/v20/schemas/ClearCacheRequest_v1p0.json deleted file mode 100644 index 49b69e9fd..000000000 --- a/ocpp/v20/schemas/ClearCacheRequest_v1p0.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true -} \ No newline at end of file diff --git a/ocpp/v20/schemas/ClearCacheResponse_v1p0.json b/ocpp/v20/schemas/ClearCacheResponse_v1p0.json deleted file mode 100644 index 5cd67bdf0..000000000 --- a/ocpp/v20/schemas/ClearCacheResponse_v1p0.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "status": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Accepted", - "Rejected" - ] - } - }, - "required": [ - "status" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/ClearChargingProfileRequest_v1p0.json b/ocpp/v20/schemas/ClearChargingProfileRequest_v1p0.json deleted file mode 100644 index 8aabba8f1..000000000 --- a/ocpp/v20/schemas/ClearChargingProfileRequest_v1p0.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "definitions": { - "ChargingProfilePurposeEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "ChargingStationExternalConstraints", - "ChargingStationMaxProfile", - "TxDefaultProfile", - "TxProfile" - ] - }, - "ClearChargingProfileType": { - "javaType": "ClearChargingProfile", - "type": "object", - "additionalProperties": true, - "properties": { - "id": { - "type": "integer" - }, - "chargingProfilePurpose": { - "$ref": "#/definitions/ChargingProfilePurposeEnumType" - }, - "stackLevel": { - "type": "integer" - } - } - } - }, - "type": "object", - "additionalProperties": true, - "properties": { - "evseId": { - "type": "integer" - }, - "chargingProfile": { - "$ref": "#/definitions/ClearChargingProfileType" - } - } -} \ No newline at end of file diff --git a/ocpp/v20/schemas/ClearChargingProfileResponse_v1p0.json b/ocpp/v20/schemas/ClearChargingProfileResponse_v1p0.json deleted file mode 100644 index ad87cc90f..000000000 --- a/ocpp/v20/schemas/ClearChargingProfileResponse_v1p0.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "status": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Accepted", - "Unknown" - ] - } - }, - "required": [ - "status" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/ClearDisplayMessageRequest_v1p0.json b/ocpp/v20/schemas/ClearDisplayMessageRequest_v1p0.json deleted file mode 100644 index c7250726e..000000000 --- a/ocpp/v20/schemas/ClearDisplayMessageRequest_v1p0.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "id": { - "type": "integer" - } - }, - "required": [ - "id" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/ClearDisplayMessageResponse_v1p0.json b/ocpp/v20/schemas/ClearDisplayMessageResponse_v1p0.json deleted file mode 100644 index ad87cc90f..000000000 --- a/ocpp/v20/schemas/ClearDisplayMessageResponse_v1p0.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "status": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Accepted", - "Unknown" - ] - } - }, - "required": [ - "status" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/ClearVariableMonitoringRequest_v1p0.json b/ocpp/v20/schemas/ClearVariableMonitoringRequest_v1p0.json deleted file mode 100644 index e9bb48ca0..000000000 --- a/ocpp/v20/schemas/ClearVariableMonitoringRequest_v1p0.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "id": { - "type": "array", - "additionalItems": false, - "items": { - "type": "integer" - }, - "minItems": 1 - } - }, - "required": [ - "id" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/ClearVariableMonitoringResponse_v1p0.json b/ocpp/v20/schemas/ClearVariableMonitoringResponse_v1p0.json deleted file mode 100644 index 56b783762..000000000 --- a/ocpp/v20/schemas/ClearVariableMonitoringResponse_v1p0.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "definitions": { - "ClearMonitoringStatusEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Accepted", - "Rejected", - "NotFound" - ] - }, - "ClearMonitoringResultType": { - "javaType": "ClearMonitoringResult", - "type": "object", - "additionalProperties": true, - "properties": { - "id": { - "type": "integer" - }, - "status": { - "$ref": "#/definitions/ClearMonitoringStatusEnumType" - } - }, - "required": [ - "id", - "status" - ] - } - }, - "type": "object", - "additionalProperties": true, - "properties": { - "clearMonitoringResult": { - "type": "array", - "additionalItems": false, - "items": { - "$ref": "#/definitions/ClearMonitoringResultType" - }, - "minItems": 1 - } - }, - "required": [ - "clearMonitoringResult" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/ClearedChargingLimitRequest_v1p0.json b/ocpp/v20/schemas/ClearedChargingLimitRequest_v1p0.json deleted file mode 100644 index cbcb5e330..000000000 --- a/ocpp/v20/schemas/ClearedChargingLimitRequest_v1p0.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "chargingLimitSource": { - "type": "string", - "additionalProperties": true, - "enum": [ - "EMS", - "Other", - "SO", - "CSO" - ] - }, - "evseId": { - "type": "integer" - } - }, - "required": [ - "chargingLimitSource" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/ClearedChargingLimitResponse_v1p0.json b/ocpp/v20/schemas/ClearedChargingLimitResponse_v1p0.json deleted file mode 100644 index 49b69e9fd..000000000 --- a/ocpp/v20/schemas/ClearedChargingLimitResponse_v1p0.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true -} \ No newline at end of file diff --git a/ocpp/v20/schemas/CostUpdatedRequest_v1p0.json b/ocpp/v20/schemas/CostUpdatedRequest_v1p0.json deleted file mode 100644 index 4808f7aaf..000000000 --- a/ocpp/v20/schemas/CostUpdatedRequest_v1p0.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "totalCost": { - "type": "number" - }, - "transactionId": { - "type": "string", - "maxLength": 36 - } - }, - "required": [ - "totalCost", - "transactionId" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/CostUpdatedResponse_v1p0.json b/ocpp/v20/schemas/CostUpdatedResponse_v1p0.json deleted file mode 100644 index 49b69e9fd..000000000 --- a/ocpp/v20/schemas/CostUpdatedResponse_v1p0.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true -} \ No newline at end of file diff --git a/ocpp/v20/schemas/CustomerInformationRequest_v1p0.json b/ocpp/v20/schemas/CustomerInformationRequest_v1p0.json deleted file mode 100644 index c924d3365..000000000 --- a/ocpp/v20/schemas/CustomerInformationRequest_v1p0.json +++ /dev/null @@ -1,129 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "definitions": { - "HashAlgorithmEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "SHA256", - "SHA384", - "SHA512" - ] - }, - "IdTokenEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Central", - "eMAID", - "ISO14443", - "KeyCode", - "Local", - "NoAuthorization", - "ISO15693" - ] - }, - "AdditionalInfoType": { - "javaType": "AdditionalInfo", - "type": "object", - "additionalProperties": true, - "properties": { - "additionalIdToken": { - "type": "string", - "maxLength": 36 - }, - "type": { - "type": "string", - "maxLength": 50 - } - }, - "required": [ - "additionalIdToken", - "type" - ] - }, - "CertificateHashDataType": { - "javaType": "CertificateHashData", - "type": "object", - "additionalProperties": true, - "properties": { - "hashAlgorithm": { - "$ref": "#/definitions/HashAlgorithmEnumType" - }, - "issuerNameHash": { - "type": "string", - "maxLength": 128 - }, - "issuerKeyHash": { - "type": "string", - "maxLength": 128 - }, - "serialNumber": { - "type": "string", - "maxLength": 20 - } - }, - "required": [ - "hashAlgorithm", - "issuerNameHash", - "issuerKeyHash", - "serialNumber" - ] - }, - "IdTokenType": { - "javaType": "IdToken", - "type": "object", - "additionalProperties": true, - "properties": { - "additionalInfo": { - "type": "array", - "additionalItems": false, - "items": { - "$ref": "#/definitions/AdditionalInfoType" - }, - "minItems": 1 - }, - "idToken": { - "type": "string", - "maxLength": 36 - }, - "type": { - "$ref": "#/definitions/IdTokenEnumType" - } - }, - "required": [ - "idToken", - "type" - ] - } - }, - "type": "object", - "additionalProperties": true, - "properties": { - "customerCertificate": { - "$ref": "#/definitions/CertificateHashDataType" - }, - "idToken": { - "$ref": "#/definitions/IdTokenType" - }, - "requestId": { - "type": "integer" - }, - "report": { - "type": "boolean" - }, - "clear": { - "type": "boolean" - }, - "customerIdentifier": { - "type": "string", - "maxLength": 64 - } - }, - "required": [ - "requestId", - "report", - "clear" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/CustomerInformationResponse_v1p0.json b/ocpp/v20/schemas/CustomerInformationResponse_v1p0.json deleted file mode 100644 index cad77599b..000000000 --- a/ocpp/v20/schemas/CustomerInformationResponse_v1p0.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "status": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Accepted", - "Rejected", - "Invalid" - ] - } - }, - "required": [ - "status" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/DataTransferRequest_v1p0.json b/ocpp/v20/schemas/DataTransferRequest_v1p0.json deleted file mode 100644 index 3ed1736e5..000000000 --- a/ocpp/v20/schemas/DataTransferRequest_v1p0.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "messageId": { - "type": "string", - "maxLength": 50 - }, - "data": {}, - "vendorId": { - "type": "string", - "maxLength": 255 - } - }, - "required": [ - "vendorId" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/DataTransferResponse_v1p0.json b/ocpp/v20/schemas/DataTransferResponse_v1p0.json deleted file mode 100644 index d5d5cb412..000000000 --- a/ocpp/v20/schemas/DataTransferResponse_v1p0.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "status": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Accepted", - "Rejected", - "UnknownMessageId", - "UnknownVendorId" - ] - }, - "data": {} - }, - "required": [ - "status" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/DeleteCertificateRequest_v1p0.json b/ocpp/v20/schemas/DeleteCertificateRequest_v1p0.json deleted file mode 100644 index 0fa6fd63a..000000000 --- a/ocpp/v20/schemas/DeleteCertificateRequest_v1p0.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "definitions": { - "HashAlgorithmEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "SHA256", - "SHA384", - "SHA512" - ] - }, - "CertificateHashDataType": { - "javaType": "CertificateHashData", - "type": "object", - "additionalProperties": true, - "properties": { - "hashAlgorithm": { - "$ref": "#/definitions/HashAlgorithmEnumType" - }, - "issuerNameHash": { - "type": "string", - "maxLength": 128 - }, - "issuerKeyHash": { - "type": "string", - "maxLength": 128 - }, - "serialNumber": { - "type": "string", - "maxLength": 20 - } - }, - "required": [ - "hashAlgorithm", - "issuerNameHash", - "issuerKeyHash", - "serialNumber" - ] - } - }, - "type": "object", - "additionalProperties": true, - "properties": { - "certificateHashData": { - "$ref": "#/definitions/CertificateHashDataType" - } - }, - "required": [ - "certificateHashData" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/DeleteCertificateResponse_v1p0.json b/ocpp/v20/schemas/DeleteCertificateResponse_v1p0.json deleted file mode 100644 index 57dfea8c9..000000000 --- a/ocpp/v20/schemas/DeleteCertificateResponse_v1p0.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "status": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Accepted", - "Failed", - "NotFound" - ] - } - }, - "required": [ - "status" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/FirmwareStatusNotificationRequest_v1p0.json b/ocpp/v20/schemas/FirmwareStatusNotificationRequest_v1p0.json deleted file mode 100644 index 665e04274..000000000 --- a/ocpp/v20/schemas/FirmwareStatusNotificationRequest_v1p0.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "status": { - "type": "string", - "additionalProperties": true, - "enum": [ - "CertificateVerified", - "Downloaded", - "DownloadFailed", - "Downloading", - "DownloadScheduled", - "DownloadPaused", - "Idle", - "InstallationFailed", - "Installing", - "Installed", - "InstallRebooting", - "InstallScheduled", - "InstallVerificationFailed", - "InvalidSignature", - "InvalidCertificate", - "RevokedCertificate", - "PublishFailed", - "SignatureVerified" - ] - }, - "requestId": { - "type": "integer" - } - }, - "required": [ - "status", - "requestId" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/FirmwareStatusNotificationResponse_v1p0.json b/ocpp/v20/schemas/FirmwareStatusNotificationResponse_v1p0.json deleted file mode 100644 index 49b69e9fd..000000000 --- a/ocpp/v20/schemas/FirmwareStatusNotificationResponse_v1p0.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true -} \ No newline at end of file diff --git a/ocpp/v20/schemas/Get15118EVCertificateRequest_v1p0.json b/ocpp/v20/schemas/Get15118EVCertificateRequest_v1p0.json deleted file mode 100644 index 694c39fdf..000000000 --- a/ocpp/v20/schemas/Get15118EVCertificateRequest_v1p0.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "15118SchemaVersion": { - "type": "string", - "maxLength": 50 - }, - "exiRequest": { - "type": "string", - "maxLength": 5500 - } - }, - "required": [ - "15118SchemaVersion", - "exiRequest" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/Get15118EVCertificateResponse_v1p0.json b/ocpp/v20/schemas/Get15118EVCertificateResponse_v1p0.json deleted file mode 100644 index ec8c444df..000000000 --- a/ocpp/v20/schemas/Get15118EVCertificateResponse_v1p0.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "definitions": { - "15118EVCertificateStatusEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Accepted", - "Failed" - ] - }, - "CertificateChainType": { - "javaType": "CertificateChain", - "type": "object", - "additionalProperties": true, - "properties": { - "certificate": { - "type": "string", - "maxLength": 800 - }, - "childCertificate": { - "type": "array", - "additionalItems": false, - "items": { - "type": "string", - "maxLength": 800 - }, - "minItems": 1, - "maxItems": 4 - } - }, - "required": [ - "certificate" - ] - } - }, - "type": "object", - "additionalProperties": true, - "properties": { - "status": { - "$ref": "#/definitions/15118EVCertificateStatusEnumType" - }, - "saProvisioningCertificateChain": { - "$ref": "#/definitions/CertificateChainType" - }, - "contractSignatureCertificateChain": { - "$ref": "#/definitions/CertificateChainType" - }, - "exiResponse": { - "type": "string", - "maxLength": 5500 - } - }, - "required": [ - "status", - "exiResponse", - "contractSignatureCertificateChain", - "saProvisioningCertificateChain" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/GetBaseReportRequest_v1p0.json b/ocpp/v20/schemas/GetBaseReportRequest_v1p0.json deleted file mode 100644 index 7c6807414..000000000 --- a/ocpp/v20/schemas/GetBaseReportRequest_v1p0.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "requestId": { - "type": "integer" - }, - "reportBase": { - "type": "string", - "additionalProperties": true, - "enum": [ - "ConfigurationInventory", - "FullInventory", - "SummaryInventory" - ] - } - }, - "required": [ - "requestId", - "reportBase" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/GetBaseReportResponse_v1p0.json b/ocpp/v20/schemas/GetBaseReportResponse_v1p0.json deleted file mode 100644 index 59370c308..000000000 --- a/ocpp/v20/schemas/GetBaseReportResponse_v1p0.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "status": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Accepted", - "Rejected", - "NotSupported" - ] - } - }, - "required": [ - "status" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/GetCertificateStatusRequest_v1p0.json b/ocpp/v20/schemas/GetCertificateStatusRequest_v1p0.json deleted file mode 100644 index e3b6e8349..000000000 --- a/ocpp/v20/schemas/GetCertificateStatusRequest_v1p0.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "definitions": { - "HashAlgorithmEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "SHA256", - "SHA384", - "SHA512" - ] - }, - "OCSPRequestDataType": { - "javaType": "OCSPRequestData", - "type": "object", - "additionalProperties": true, - "properties": { - "hashAlgorithm": { - "$ref": "#/definitions/HashAlgorithmEnumType" - }, - "issuerNameHash": { - "type": "string", - "maxLength": 128 - }, - "issuerKeyHash": { - "type": "string", - "maxLength": 128 - }, - "serialNumber": { - "type": "string", - "maxLength": 20 - }, - "responderURL": { - "type": "string", - "maxLength": 512 - } - }, - "required": [ - "hashAlgorithm", - "issuerNameHash", - "issuerKeyHash", - "serialNumber" - ] - } - }, - "type": "object", - "additionalProperties": true, - "properties": { - "ocspRequestData": { - "$ref": "#/definitions/OCSPRequestDataType" - } - }, - "required": [ - "ocspRequestData" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/GetCertificateStatusResponse_v1p0.json b/ocpp/v20/schemas/GetCertificateStatusResponse_v1p0.json deleted file mode 100644 index f2023c411..000000000 --- a/ocpp/v20/schemas/GetCertificateStatusResponse_v1p0.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "status": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Accepted", - "Rejected" - ] - }, - "ocspResult": { - "type": "string", - "maxLength": 5500 - } - }, - "required": [ - "status" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/GetChargingProfilesRequest_v1p0.json b/ocpp/v20/schemas/GetChargingProfilesRequest_v1p0.json deleted file mode 100644 index b9e695c6e..000000000 --- a/ocpp/v20/schemas/GetChargingProfilesRequest_v1p0.json +++ /dev/null @@ -1,72 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "definitions": { - "ChargingLimitSourceEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "EMS", - "Other", - "SO", - "CSO" - ] - }, - "ChargingProfilePurposeEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "ChargingStationExternalConstraints", - "ChargingStationMaxProfile", - "TxDefaultProfile", - "TxProfile" - ] - }, - "ChargingProfileCriterionType": { - "javaType": "ChargingProfileCriterion", - "type": "object", - "additionalProperties": true, - "properties": { - "chargingProfilePurpose": { - "$ref": "#/definitions/ChargingProfilePurposeEnumType" - }, - "stackLevel": { - "type": "integer" - }, - "chargingProfileId": { - "type": "array", - "additionalItems": false, - "items": { - "type": "integer" - }, - "minItems": 1 - }, - "chargingLimitSource": { - "type": "array", - "additionalItems": false, - "items": { - "$ref": "#/definitions/ChargingLimitSourceEnumType" - }, - "minItems": 1, - "maxItems": 4 - } - } - } - }, - "type": "object", - "additionalProperties": true, - "properties": { - "requestId": { - "type": "integer" - }, - "evseId": { - "type": "integer" - }, - "chargingProfile": { - "$ref": "#/definitions/ChargingProfileCriterionType" - } - }, - "required": [ - "chargingProfile" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/GetChargingProfilesResponse_v1p0.json b/ocpp/v20/schemas/GetChargingProfilesResponse_v1p0.json deleted file mode 100644 index fc17a6a6c..000000000 --- a/ocpp/v20/schemas/GetChargingProfilesResponse_v1p0.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "status": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Accepted", - "NoProfiles" - ] - } - }, - "required": [ - "status" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/GetCompositeScheduleRequest_v1p0.json b/ocpp/v20/schemas/GetCompositeScheduleRequest_v1p0.json deleted file mode 100644 index 2ebb65a05..000000000 --- a/ocpp/v20/schemas/GetCompositeScheduleRequest_v1p0.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "duration": { - "type": "integer" - }, - "chargingRateUnit": { - "type": "string", - "additionalProperties": true, - "enum": [ - "W", - "A" - ] - }, - "evseId": { - "type": "integer" - } - }, - "required": [ - "duration", - "evseId" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/GetCompositeScheduleResponse_v1p0.json b/ocpp/v20/schemas/GetCompositeScheduleResponse_v1p0.json deleted file mode 100644 index aba5a9991..000000000 --- a/ocpp/v20/schemas/GetCompositeScheduleResponse_v1p0.json +++ /dev/null @@ -1,107 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "definitions": { - "ChargingRateUnitEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "W", - "A" - ] - }, - "GetCompositeScheduleStatusEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Accepted", - "Rejected" - ] - }, - "ChargingSchedulePeriodType": { - "javaType": "ChargingSchedulePeriod", - "type": "object", - "additionalProperties": true, - "properties": { - "startPeriod": { - "type": "integer" - }, - "limit": { - "type": "number" - }, - "numberPhases": { - "type": "integer" - }, - "phaseToUse": { - "type": "integer" - } - }, - "required": [ - "startPeriod", - "limit" - ] - }, - "ChargingScheduleType": { - "javaType": "ChargingSchedule", - "type": "object", - "additionalProperties": true, - "properties": { - "startSchedule": { - "type": "string", - "format": "date-time" - }, - "duration": { - "type": "integer" - }, - "chargingRateUnit": { - "$ref": "#/definitions/ChargingRateUnitEnumType" - }, - "chargingSchedulePeriod": { - "type": "array", - "additionalItems": false, - "items": { - "$ref": "#/definitions/ChargingSchedulePeriodType" - }, - "minItems": 1 - }, - "minChargingRate": { - "type": "number" - } - }, - "required": [ - "chargingRateUnit" - ] - }, - "CompositeScheduleType": { - "javaType": "CompositeSchedule", - "type": "object", - "additionalProperties": true, - "properties": { - "startDateTime": { - "type": "string", - "format": "date-time" - }, - "chargingSchedule": { - "$ref": "#/definitions/ChargingScheduleType" - } - } - } - }, - "type": "object", - "additionalProperties": true, - "properties": { - "status": { - "$ref": "#/definitions/GetCompositeScheduleStatusEnumType" - }, - "evseId": { - "type": "integer" - }, - "schedule": { - "$ref": "#/definitions/CompositeScheduleType" - } - }, - "required": [ - "status", - "evseId" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/GetDisplayMessagesRequest_v1p0.json b/ocpp/v20/schemas/GetDisplayMessagesRequest_v1p0.json deleted file mode 100644 index be91864cf..000000000 --- a/ocpp/v20/schemas/GetDisplayMessagesRequest_v1p0.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "requestId": { - "type": "integer" - }, - "priority": { - "type": "string", - "additionalProperties": true, - "enum": [ - "AlwaysFront", - "InFront", - "NormalCycle" - ] - }, - "state": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Charging", - "Faulted", - "Idle", - "Unavailable" - ] - }, - "id": { - "type": "array", - "additionalItems": false, - "items": { - "type": "integer" - }, - "minItems": 1 - } - }, - "required": [ - "requestId" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/GetDisplayMessagesResponse_v1p0.json b/ocpp/v20/schemas/GetDisplayMessagesResponse_v1p0.json deleted file mode 100644 index ad87cc90f..000000000 --- a/ocpp/v20/schemas/GetDisplayMessagesResponse_v1p0.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "status": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Accepted", - "Unknown" - ] - } - }, - "required": [ - "status" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/GetInstalledCertificateIdsRequest_v1p0.json b/ocpp/v20/schemas/GetInstalledCertificateIdsRequest_v1p0.json deleted file mode 100644 index 648297f7f..000000000 --- a/ocpp/v20/schemas/GetInstalledCertificateIdsRequest_v1p0.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "typeOfCertificate": { - "type": "string", - "additionalProperties": true, - "enum": [ - "V2GRootCertficate", - "MORootCertificate", - "CSOSubCA1", - "CSOSubCA2", - "CSMSRootCertificate", - "ManufacturerRootCertificate" - ] - } - }, - "required": [ - "typeOfCertificate" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/GetInstalledCertificateIdsResponse_v1p0.json b/ocpp/v20/schemas/GetInstalledCertificateIdsResponse_v1p0.json deleted file mode 100644 index 1397f9605..000000000 --- a/ocpp/v20/schemas/GetInstalledCertificateIdsResponse_v1p0.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "definitions": { - "GetInstalledCertificateStatusEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Accepted", - "NotFound" - ] - }, - "HashAlgorithmEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "SHA256", - "SHA384", - "SHA512" - ] - }, - "CertificateHashDataType": { - "javaType": "CertificateHashData", - "type": "object", - "additionalProperties": true, - "properties": { - "hashAlgorithm": { - "$ref": "#/definitions/HashAlgorithmEnumType" - }, - "issuerNameHash": { - "type": "string", - "maxLength": 128 - }, - "issuerKeyHash": { - "type": "string", - "maxLength": 128 - }, - "serialNumber": { - "type": "string", - "maxLength": 20 - } - }, - "required": [ - "hashAlgorithm", - "issuerNameHash", - "issuerKeyHash", - "serialNumber" - ] - } - }, - "type": "object", - "additionalProperties": true, - "properties": { - "certificateHashData": { - "type": "array", - "additionalItems": false, - "items": { - "$ref": "#/definitions/CertificateHashDataType" - }, - "minItems": 1 - }, - "status": { - "$ref": "#/definitions/GetInstalledCertificateStatusEnumType" - } - }, - "required": [ - "status" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/GetLocalListVersionRequest_v1p0.json b/ocpp/v20/schemas/GetLocalListVersionRequest_v1p0.json deleted file mode 100644 index 49b69e9fd..000000000 --- a/ocpp/v20/schemas/GetLocalListVersionRequest_v1p0.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true -} \ No newline at end of file diff --git a/ocpp/v20/schemas/GetLocalListVersionResponse_v1p0.json b/ocpp/v20/schemas/GetLocalListVersionResponse_v1p0.json deleted file mode 100644 index 29c3e8648..000000000 --- a/ocpp/v20/schemas/GetLocalListVersionResponse_v1p0.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "versionNumber": { - "type": "integer" - } - }, - "required": [ - "versionNumber" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/GetLogRequest_v1p0.json b/ocpp/v20/schemas/GetLogRequest_v1p0.json deleted file mode 100644 index 0d7633572..000000000 --- a/ocpp/v20/schemas/GetLogRequest_v1p0.json +++ /dev/null @@ -1,60 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "definitions": { - "LogEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "DiagnosticsLog", - "SecurityLog" - ] - }, - "LogParametersType": { - "javaType": "LogParameters", - "type": "object", - "additionalProperties": true, - "properties": { - "remoteLocation": { - "type": "string", - "maxLength": 512 - }, - "oldestTimestamp": { - "type": "string", - "format": "date-time" - }, - "latestTimestamp": { - "type": "string", - "format": "date-time" - } - }, - "required": [ - "remoteLocation" - ] - } - }, - "type": "object", - "additionalProperties": true, - "properties": { - "log": { - "$ref": "#/definitions/LogParametersType" - }, - "logType": { - "$ref": "#/definitions/LogEnumType" - }, - "requestId": { - "type": "integer" - }, - "retries": { - "type": "integer" - }, - "retryInterval": { - "type": "integer" - } - }, - "required": [ - "logType", - "requestId", - "log" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/GetLogResponse_v1p0.json b/ocpp/v20/schemas/GetLogResponse_v1p0.json deleted file mode 100644 index a75ceadce..000000000 --- a/ocpp/v20/schemas/GetLogResponse_v1p0.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "status": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Accepted", - "Rejected", - "AcceptedCanceled" - ] - }, - "filename": { - "type": "string", - "maxLength": 255 - } - }, - "required": [ - "status" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/GetMonitoringReportRequest_v1p0.json b/ocpp/v20/schemas/GetMonitoringReportRequest_v1p0.json deleted file mode 100644 index 2e0a3dba0..000000000 --- a/ocpp/v20/schemas/GetMonitoringReportRequest_v1p0.json +++ /dev/null @@ -1,111 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "definitions": { - "MonitoringCriterionEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "ThresholdMonitoring", - "DeltaMonitoring", - "PeriodicMonitoring" - ] - }, - "ComponentType": { - "javaType": "Component", - "type": "object", - "additionalProperties": true, - "properties": { - "evse": { - "$ref": "#/definitions/EVSEType" - }, - "name": { - "type": "string", - "maxLength": 50 - }, - "instance": { - "type": "string", - "maxLength": 50 - } - }, - "required": [ - "name" - ] - }, - "ComponentVariableType": { - "javaType": "ComponentVariable", - "type": "object", - "additionalProperties": true, - "properties": { - "component": { - "$ref": "#/definitions/ComponentType" - }, - "variable": { - "$ref": "#/definitions/VariableType" - } - }, - "required": [ - "component", - "variable" - ] - }, - "EVSEType": { - "javaType": "EVSE", - "type": "object", - "additionalProperties": true, - "properties": { - "id": { - "type": "integer" - }, - "connectorId": { - "type": "integer" - } - }, - "required": [ - "id" - ] - }, - "VariableType": { - "javaType": "Variable", - "type": "object", - "additionalProperties": true, - "properties": { - "name": { - "type": "string", - "maxLength": 50 - }, - "instance": { - "type": "string", - "maxLength": 50 - } - }, - "required": [ - "name" - ] - } - }, - "type": "object", - "additionalProperties": true, - "properties": { - "componentVariable": { - "type": "array", - "additionalItems": false, - "items": { - "$ref": "#/definitions/ComponentVariableType" - }, - "minItems": 1 - }, - "requestId": { - "type": "integer" - }, - "monitoringCriteria": { - "type": "array", - "additionalItems": false, - "items": { - "$ref": "#/definitions/MonitoringCriterionEnumType" - }, - "minItems": 1, - "maxItems": 3 - } - } -} \ No newline at end of file diff --git a/ocpp/v20/schemas/GetMonitoringReportResponse_v1p0.json b/ocpp/v20/schemas/GetMonitoringReportResponse_v1p0.json deleted file mode 100644 index 59370c308..000000000 --- a/ocpp/v20/schemas/GetMonitoringReportResponse_v1p0.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "status": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Accepted", - "Rejected", - "NotSupported" - ] - } - }, - "required": [ - "status" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/GetReportRequest_v1p0.json b/ocpp/v20/schemas/GetReportRequest_v1p0.json deleted file mode 100644 index cf71d20e1..000000000 --- a/ocpp/v20/schemas/GetReportRequest_v1p0.json +++ /dev/null @@ -1,112 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "definitions": { - "ComponentCriterionEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Active", - "Available", - "Enabled", - "Problem" - ] - }, - "ComponentType": { - "javaType": "Component", - "type": "object", - "additionalProperties": true, - "properties": { - "evse": { - "$ref": "#/definitions/EVSEType" - }, - "name": { - "type": "string", - "maxLength": 50 - }, - "instance": { - "type": "string", - "maxLength": 50 - } - }, - "required": [ - "name" - ] - }, - "ComponentVariableType": { - "javaType": "ComponentVariable", - "type": "object", - "additionalProperties": true, - "properties": { - "component": { - "$ref": "#/definitions/ComponentType" - }, - "variable": { - "$ref": "#/definitions/VariableType" - } - }, - "required": [ - "component", - "variable" - ] - }, - "EVSEType": { - "javaType": "EVSE", - "type": "object", - "additionalProperties": true, - "properties": { - "id": { - "type": "integer" - }, - "connectorId": { - "type": "integer" - } - }, - "required": [ - "id" - ] - }, - "VariableType": { - "javaType": "Variable", - "type": "object", - "additionalProperties": true, - "properties": { - "name": { - "type": "string", - "maxLength": 50 - }, - "instance": { - "type": "string", - "maxLength": 50 - } - }, - "required": [ - "name" - ] - } - }, - "type": "object", - "additionalProperties": true, - "properties": { - "componentVariable": { - "type": "array", - "additionalItems": false, - "items": { - "$ref": "#/definitions/ComponentVariableType" - }, - "minItems": 1 - }, - "requestId": { - "type": "integer" - }, - "componentCriteria": { - "type": "array", - "additionalItems": false, - "items": { - "$ref": "#/definitions/ComponentCriterionEnumType" - }, - "minItems": 1, - "maxItems": 4 - } - } -} \ No newline at end of file diff --git a/ocpp/v20/schemas/GetReportResponse_v1p0.json b/ocpp/v20/schemas/GetReportResponse_v1p0.json deleted file mode 100644 index 59370c308..000000000 --- a/ocpp/v20/schemas/GetReportResponse_v1p0.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "status": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Accepted", - "Rejected", - "NotSupported" - ] - } - }, - "required": [ - "status" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/GetTransactionStatusRequest_v1p0.json b/ocpp/v20/schemas/GetTransactionStatusRequest_v1p0.json deleted file mode 100644 index 0368c5043..000000000 --- a/ocpp/v20/schemas/GetTransactionStatusRequest_v1p0.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "transactionId": { - "type": "string", - "maxLength": 36 - } - } -} \ No newline at end of file diff --git a/ocpp/v20/schemas/GetTransactionStatusResponse_v1p0.json b/ocpp/v20/schemas/GetTransactionStatusResponse_v1p0.json deleted file mode 100644 index 814f585f4..000000000 --- a/ocpp/v20/schemas/GetTransactionStatusResponse_v1p0.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "ongoingIndicator": { - "type": "boolean" - }, - "messagesInQueue": { - "type": "boolean" - } - }, - "required": [ - "messagesInQueue" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/GetVariablesRequest_v1p0.json b/ocpp/v20/schemas/GetVariablesRequest_v1p0.json deleted file mode 100644 index 4282b4273..000000000 --- a/ocpp/v20/schemas/GetVariablesRequest_v1p0.json +++ /dev/null @@ -1,107 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "definitions": { - "AttributeEnumType": { - "type": "string", - "default": "Actual", - "additionalProperties": true, - "enum": [ - "Actual", - "Target", - "MinSet", - "MaxSet" - ] - }, - "ComponentType": { - "javaType": "Component", - "type": "object", - "additionalProperties": true, - "properties": { - "evse": { - "$ref": "#/definitions/EVSEType" - }, - "name": { - "type": "string", - "maxLength": 50 - }, - "instance": { - "type": "string", - "maxLength": 50 - } - }, - "required": [ - "name" - ] - }, - "EVSEType": { - "javaType": "EVSE", - "type": "object", - "additionalProperties": true, - "properties": { - "id": { - "type": "integer" - }, - "connectorId": { - "type": "integer" - } - }, - "required": [ - "id" - ] - }, - "GetVariableDataType": { - "javaType": "GetVariableData", - "type": "object", - "additionalProperties": true, - "properties": { - "attributeType": { - "$ref": "#/definitions/AttributeEnumType" - }, - "component": { - "$ref": "#/definitions/ComponentType" - }, - "variable": { - "$ref": "#/definitions/VariableType" - } - }, - "required": [ - "component", - "variable" - ] - }, - "VariableType": { - "javaType": "Variable", - "type": "object", - "additionalProperties": true, - "properties": { - "name": { - "type": "string", - "maxLength": 50 - }, - "instance": { - "type": "string", - "maxLength": 50 - } - }, - "required": [ - "name" - ] - } - }, - "type": "object", - "additionalProperties": true, - "properties": { - "getVariableData": { - "type": "array", - "additionalItems": false, - "items": { - "$ref": "#/definitions/GetVariableDataType" - }, - "minItems": 1 - } - }, - "required": [ - "getVariableData" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/GetVariablesResponse_v1p0.json b/ocpp/v20/schemas/GetVariablesResponse_v1p0.json deleted file mode 100644 index e96e68eda..000000000 --- a/ocpp/v20/schemas/GetVariablesResponse_v1p0.json +++ /dev/null @@ -1,126 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "definitions": { - "AttributeEnumType": { - "type": "string", - "default": "Actual", - "additionalProperties": true, - "enum": [ - "Actual", - "Target", - "MinSet", - "MaxSet" - ] - }, - "GetVariableStatusEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Accepted", - "Rejected", - "UnknownComponent", - "UnknownVariable", - "NotSupportedAttributeType" - ] - }, - "ComponentType": { - "javaType": "Component", - "type": "object", - "additionalProperties": true, - "properties": { - "evse": { - "$ref": "#/definitions/EVSEType" - }, - "name": { - "type": "string", - "maxLength": 50 - }, - "instance": { - "type": "string", - "maxLength": 50 - } - }, - "required": [ - "name" - ] - }, - "EVSEType": { - "javaType": "EVSE", - "type": "object", - "additionalProperties": true, - "properties": { - "id": { - "type": "integer" - }, - "connectorId": { - "type": "integer" - } - }, - "required": [ - "id" - ] - }, - "GetVariableResultType": { - "javaType": "GetVariableResult", - "type": "object", - "additionalProperties": true, - "properties": { - "attributeStatus": { - "$ref": "#/definitions/GetVariableStatusEnumType" - }, - "attributeType": { - "$ref": "#/definitions/AttributeEnumType" - }, - "attributeValue": { - "type": "string", - "maxLength": 1000 - }, - "component": { - "$ref": "#/definitions/ComponentType" - }, - "variable": { - "$ref": "#/definitions/VariableType" - } - }, - "required": [ - "attributeStatus", - "component", - "variable" - ] - }, - "VariableType": { - "javaType": "Variable", - "type": "object", - "additionalProperties": true, - "properties": { - "name": { - "type": "string", - "maxLength": 50 - }, - "instance": { - "type": "string", - "maxLength": 50 - } - }, - "required": [ - "name" - ] - } - }, - "type": "object", - "additionalProperties": true, - "properties": { - "getVariableResult": { - "type": "array", - "additionalItems": false, - "items": { - "$ref": "#/definitions/GetVariableResultType" - }, - "minItems": 1 - } - }, - "required": [ - "getVariableResult" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/HeartbeatRequest_v1p0.json b/ocpp/v20/schemas/HeartbeatRequest_v1p0.json deleted file mode 100644 index 49b69e9fd..000000000 --- a/ocpp/v20/schemas/HeartbeatRequest_v1p0.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true -} \ No newline at end of file diff --git a/ocpp/v20/schemas/HeartbeatResponse_v1p0.json b/ocpp/v20/schemas/HeartbeatResponse_v1p0.json deleted file mode 100644 index f303de207..000000000 --- a/ocpp/v20/schemas/HeartbeatResponse_v1p0.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "currentTime": { - "type": "string", - "format": "date-time" - } - }, - "required": [ - "currentTime" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/InstallCertificateRequest_v1p0.json b/ocpp/v20/schemas/InstallCertificateRequest_v1p0.json deleted file mode 100644 index 93f123ac8..000000000 --- a/ocpp/v20/schemas/InstallCertificateRequest_v1p0.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "certificateType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "V2GRootCertficate", - "MORootCertificate", - "CSOSubCA1", - "CSOSubCA2", - "CSMSRootCertificate", - "ManufacturerRootCertificate" - ] - }, - "certificate": { - "type": "string", - "maxLength": 800 - } - }, - "required": [ - "certificateType", - "certificate" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/InstallCertificateResponse_v1p0.json b/ocpp/v20/schemas/InstallCertificateResponse_v1p0.json deleted file mode 100644 index 89939d4ae..000000000 --- a/ocpp/v20/schemas/InstallCertificateResponse_v1p0.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "status": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Accepted", - "SignatureError", - "CertificateExpired", - "CertificateRevoked", - "NoCertificateAvailable", - "CertChainError", - "ContractCancelled" - ] - } - }, - "required": [ - "status" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/LogStatusNotificationRequest_v1p0.json b/ocpp/v20/schemas/LogStatusNotificationRequest_v1p0.json deleted file mode 100644 index b5cb62e74..000000000 --- a/ocpp/v20/schemas/LogStatusNotificationRequest_v1p0.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "status": { - "type": "string", - "additionalProperties": true, - "enum": [ - "BadMessage", - "Idle", - "NotSupportedOperation", - "PermissionDenied", - "Uploaded", - "UploadFailure", - "Uploading" - ] - }, - "requestId": { - "type": "integer" - } - }, - "required": [ - "status", - "requestId" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/LogStatusNotificationResponse_v1p0.json b/ocpp/v20/schemas/LogStatusNotificationResponse_v1p0.json deleted file mode 100644 index 49b69e9fd..000000000 --- a/ocpp/v20/schemas/LogStatusNotificationResponse_v1p0.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true -} \ No newline at end of file diff --git a/ocpp/v20/schemas/MeterValuesRequest_v1p0.json b/ocpp/v20/schemas/MeterValuesRequest_v1p0.json deleted file mode 100644 index 9d984d534..000000000 --- a/ocpp/v20/schemas/MeterValuesRequest_v1p0.json +++ /dev/null @@ -1,211 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "definitions": { - "EncodingMethodEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Other", - "DLMS Message", - "COSEM Protected Data", - "EDL" - ] - }, - "LocationEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Body", - "Cable", - "EV", - "Inlet", - "Outlet" - ] - }, - "MeasurandEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Current.Export", - "Current.Import", - "Current.Offered", - "Energy.Active.Export.Register", - "Energy.Active.Import.Register", - "Energy.Reactive.Export.Register", - "Energy.Reactive.Import.Register", - "Energy.Active.Export.Interval", - "Energy.Active.Import.Interval", - "Energy.Active.Net", - "Energy.Reactive.Export.Interval", - "Energy.Reactive.Import.Interval", - "Energy.Reactive.Net", - "Energy.Apparent.Net", - "Energy.Apparent.Import", - "Energy.Apparent.Export", - "Frequency", - "Power.Active.Export", - "Power.Active.Import", - "Power.Factor", - "Power.Offered", - "Power.Reactive.Export", - "Power.Reactive.Import", - "SoC", - "Voltage" - ] - }, - "PhaseEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "L1", - "L2", - "L3", - "N", - "L1-N", - "L2-N", - "L3-N", - "L1-L2", - "L2-L3", - "L3-L1" - ] - }, - "ReadingContextEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Interruption.Begin", - "Interruption.End", - "Other", - "Sample.Clock", - "Sample.Periodic", - "Transaction.Begin", - "Transaction.End", - "Trigger" - ] - }, - "SignatureMethodEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "ECDSAP256SHA256", - "ECDSAP384SHA384", - "ECDSA192SHA256" - ] - }, - "MeterValueType": { - "javaType": "MeterValue", - "type": "object", - "additionalProperties": true, - "properties": { - "sampledValue": { - "type": "array", - "additionalItems": false, - "items": { - "$ref": "#/definitions/SampledValueType" - }, - "minItems": 1 - }, - "timestamp": { - "type": "string", - "format": "date-time" - } - }, - "required": [ - "timestamp", - "sampledValue" - ] - }, - "SampledValueType": { - "javaType": "SampledValue", - "type": "object", - "additionalProperties": true, - "properties": { - "value": { - "type": "number" - }, - "context": { - "$ref": "#/definitions/ReadingContextEnumType" - }, - "measurand": { - "$ref": "#/definitions/MeasurandEnumType" - }, - "phase": { - "$ref": "#/definitions/PhaseEnumType" - }, - "location": { - "$ref": "#/definitions/LocationEnumType" - }, - "signedMeterValue": { - "$ref": "#/definitions/SignedMeterValueType" - }, - "unitOfMeasure": { - "$ref": "#/definitions/UnitOfMeasureType" - } - }, - "required": [ - "value" - ] - }, - "SignedMeterValueType": { - "javaType": "SignedMeterValue", - "type": "object", - "additionalProperties": true, - "properties": { - "meterValueSignature": { - "type": "string", - "maxLength": 2500 - }, - "signatureMethod": { - "$ref": "#/definitions/SignatureMethodEnumType" - }, - "encodingMethod": { - "$ref": "#/definitions/EncodingMethodEnumType" - }, - "encodedMeterValue": { - "type": "string", - "maxLength": 512 - } - }, - "required": [ - "meterValueSignature", - "signatureMethod", - "encodingMethod", - "encodedMeterValue" - ] - }, - "UnitOfMeasureType": { - "javaType": "UnitOfMeasure", - "type": "object", - "additionalProperties": true, - "properties": { - "unit": { - "type": "string", - "maxLength": 20 - }, - "multiplier": { - "type": "integer" - } - } - } - }, - "type": "object", - "additionalProperties": true, - "properties": { - "evseId": { - "type": "integer" - }, - "meterValue": { - "type": "array", - "additionalItems": false, - "items": { - "$ref": "#/definitions/MeterValueType" - }, - "minItems": 1 - } - }, - "required": [ - "evseId", - "meterValue" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/MeterValuesResponse_v1p0.json b/ocpp/v20/schemas/MeterValuesResponse_v1p0.json deleted file mode 100644 index 49b69e9fd..000000000 --- a/ocpp/v20/schemas/MeterValuesResponse_v1p0.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true -} \ No newline at end of file diff --git a/ocpp/v20/schemas/NotifyCentralChargingNeedsRequest_v1p0.json b/ocpp/v20/schemas/NotifyCentralChargingNeedsRequest_v1p0.json deleted file mode 100644 index 5de029edf..000000000 --- a/ocpp/v20/schemas/NotifyCentralChargingNeedsRequest_v1p0.json +++ /dev/null @@ -1,190 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "definitions": { - "CostKindEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "CarbonDioxideEmission", - "RelativePricePercentage", - "RenewableGenerationPercentage" - ] - }, - "ConsumptionCostType": { - "javaType": "ConsumptionCost", - "type": "object", - "additionalProperties": true, - "properties": { - "startValue": { - "type": "number" - }, - "cost": { - "type": "array", - "additionalItems": false, - "items": { - "$ref": "#/definitions/CostType" - }, - "minItems": 1, - "maxItems": 3 - } - }, - "required": [ - "startValue", - "cost" - ] - }, - "CostType": { - "javaType": "Cost", - "type": "object", - "additionalProperties": true, - "properties": { - "costKind": { - "$ref": "#/definitions/CostKindEnumType" - }, - "amount": { - "type": "number" - }, - "amountMultiplier": { - "type": "integer" - } - }, - "required": [ - "costKind", - "amount" - ] - }, - "PMaxScheduleType": { - "javaType": "PMaxSchedule", - "type": "object", - "additionalProperties": true, - "properties": { - "relativeTimeInterval": { - "$ref": "#/definitions/RelativeTimeIntervalType" - }, - "pMax": { - "type": "number" - } - }, - "required": [ - "pMax", - "relativeTimeInterval" - ] - }, - "RelativeTimeIntervalType": { - "javaType": "RelativeTimeInterval", - "type": "object", - "additionalProperties": true, - "properties": { - "start": { - "type": "integer" - }, - "duration": { - "type": "integer" - } - }, - "required": [ - "start" - ] - }, - "SalesTariffEntryType": { - "javaType": "SalesTariffEntry", - "type": "object", - "additionalProperties": true, - "properties": { - "relativeTimeInterval": { - "$ref": "#/definitions/RelativeTimeIntervalType" - }, - "ePriceLevel": { - "type": "integer", - "minimum": 0.0 - }, - "consumptionCost": { - "type": "array", - "additionalItems": false, - "items": { - "$ref": "#/definitions/ConsumptionCostType" - }, - "minItems": 1, - "maxItems": 3 - } - } - }, - "SalesTariffType": { - "javaType": "SalesTariff", - "type": "object", - "additionalProperties": true, - "properties": { - "id": { - "type": "integer" - }, - "salesTariffDescription": { - "type": "string", - "maxLength": 32 - }, - "numEPriceLevels": { - "type": "integer" - }, - "salesTariffEntry": { - "type": "array", - "additionalItems": false, - "items": { - "$ref": "#/definitions/SalesTariffEntryType" - }, - "minItems": 1, - "maxItems": 1024 - } - }, - "required": [ - "id", - "salesTariffEntry" - ] - }, - "SAScheduleType": { - "javaType": "SASchedule", - "type": "object", - "additionalProperties": true, - "properties": { - "pMaxSchedule": { - "type": "array", - "additionalItems": false, - "items": { - "$ref": "#/definitions/PMaxScheduleType" - }, - "minItems": 1, - "maxItems": 1024 - }, - "saScheduleTupleID": { - "type": "integer" - }, - "salesTariff": { - "$ref": "#/definitions/SalesTariffType" - } - }, - "required": [ - "saScheduleTupleID", - "pMaxSchedule" - ] - } - }, - "type": "object", - "additionalProperties": true, - "properties": { - "evseId": { - "type": "integer" - }, - "saSchedule": { - "type": "array", - "additionalItems": false, - "items": { - "$ref": "#/definitions/SAScheduleType" - }, - "minItems": 1, - "maxItems": 3 - } - }, - "required": [ - "evseId", - "saSchedule" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/NotifyCentralChargingNeedsResponse_v1p0.json b/ocpp/v20/schemas/NotifyCentralChargingNeedsResponse_v1p0.json deleted file mode 100644 index 5cd67bdf0..000000000 --- a/ocpp/v20/schemas/NotifyCentralChargingNeedsResponse_v1p0.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "status": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Accepted", - "Rejected" - ] - } - }, - "required": [ - "status" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/NotifyChargingLimitRequest_v1p0.json b/ocpp/v20/schemas/NotifyChargingLimitRequest_v1p0.json deleted file mode 100644 index f96fdb2b3..000000000 --- a/ocpp/v20/schemas/NotifyChargingLimitRequest_v1p0.json +++ /dev/null @@ -1,116 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "definitions": { - "ChargingLimitSourceEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "EMS", - "Other", - "SO", - "CSO" - ] - }, - "ChargingRateUnitEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "W", - "A" - ] - }, - "ChargingLimitType": { - "javaType": "ChargingLimit", - "type": "object", - "additionalProperties": true, - "properties": { - "chargingLimitSource": { - "$ref": "#/definitions/ChargingLimitSourceEnumType" - }, - "isGridCritical": { - "type": "boolean" - } - }, - "required": [ - "chargingLimitSource" - ] - }, - "ChargingSchedulePeriodType": { - "javaType": "ChargingSchedulePeriod", - "type": "object", - "additionalProperties": true, - "properties": { - "startPeriod": { - "type": "integer" - }, - "limit": { - "type": "number" - }, - "numberPhases": { - "type": "integer" - }, - "phaseToUse": { - "type": "integer" - } - }, - "required": [ - "startPeriod", - "limit" - ] - }, - "ChargingScheduleType": { - "javaType": "ChargingSchedule", - "type": "object", - "additionalProperties": true, - "properties": { - "startSchedule": { - "type": "string", - "format": "date-time" - }, - "duration": { - "type": "integer" - }, - "chargingRateUnit": { - "$ref": "#/definitions/ChargingRateUnitEnumType" - }, - "chargingSchedulePeriod": { - "type": "array", - "additionalItems": false, - "items": { - "$ref": "#/definitions/ChargingSchedulePeriodType" - }, - "minItems": 1 - }, - "minChargingRate": { - "type": "number" - } - }, - "required": [ - "chargingRateUnit", - "chargingSchedulePeriod" - ] - } - }, - "type": "object", - "additionalProperties": true, - "properties": { - "chargingSchedule": { - "type": "array", - "additionalItems": false, - "items": { - "$ref": "#/definitions/ChargingScheduleType" - }, - "minItems": 1 - }, - "evseId": { - "type": "integer" - }, - "chargingLimit": { - "$ref": "#/definitions/ChargingLimitType" - } - }, - "required": [ - "chargingLimit" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/NotifyChargingLimitResponse_v1p0.json b/ocpp/v20/schemas/NotifyChargingLimitResponse_v1p0.json deleted file mode 100644 index 49b69e9fd..000000000 --- a/ocpp/v20/schemas/NotifyChargingLimitResponse_v1p0.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true -} \ No newline at end of file diff --git a/ocpp/v20/schemas/NotifyCustomerInformationRequest_v1p0.json b/ocpp/v20/schemas/NotifyCustomerInformationRequest_v1p0.json deleted file mode 100644 index b9086c1d2..000000000 --- a/ocpp/v20/schemas/NotifyCustomerInformationRequest_v1p0.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "data": { - "type": "string", - "maxLength": 512 - }, - "tbc": { - "type": "boolean" - }, - "seqNo": { - "type": "integer" - }, - "generatedAt": { - "type": "string", - "format": "date-time" - }, - "requestId": { - "type": "integer" - } - }, - "required": [ - "data", - "tbc", - "seqNo", - "generatedAt" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/NotifyCustomerInformationResponse_v1p0.json b/ocpp/v20/schemas/NotifyCustomerInformationResponse_v1p0.json deleted file mode 100644 index 49b69e9fd..000000000 --- a/ocpp/v20/schemas/NotifyCustomerInformationResponse_v1p0.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true -} \ No newline at end of file diff --git a/ocpp/v20/schemas/NotifyDisplayMessagesRequest_v1p0.json b/ocpp/v20/schemas/NotifyDisplayMessagesRequest_v1p0.json deleted file mode 100644 index a404c1882..000000000 --- a/ocpp/v20/schemas/NotifyDisplayMessagesRequest_v1p0.json +++ /dev/null @@ -1,156 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "definitions": { - "MessageFormatEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "ASCII", - "HTML", - "URI", - "UTF8" - ] - }, - "MessagePriorityEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "AlwaysFront", - "InFront", - "NormalCycle" - ] - }, - "MessageStateEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Charging", - "Faulted", - "Idle", - "Unavailable" - ] - }, - "ComponentType": { - "javaType": "Component", - "type": "object", - "additionalProperties": true, - "properties": { - "evse": { - "$ref": "#/definitions/EVSEType" - }, - "name": { - "type": "string", - "maxLength": 50 - }, - "instance": { - "type": "string", - "maxLength": 50 - } - }, - "required": [ - "name" - ] - }, - "EVSEType": { - "javaType": "EVSE", - "type": "object", - "additionalProperties": true, - "properties": { - "id": { - "type": "integer" - }, - "connectorId": { - "type": "integer" - } - }, - "required": [ - "id" - ] - }, - "MessageContentType": { - "javaType": "MessageContent", - "type": "object", - "additionalProperties": true, - "properties": { - "format": { - "$ref": "#/definitions/MessageFormatEnumType" - }, - "language": { - "type": "string", - "maxLength": 8 - }, - "content": { - "type": "string", - "maxLength": 512 - } - }, - "required": [ - "format", - "content" - ] - }, - "MessageInfoType": { - "javaType": "MessageInfo", - "type": "object", - "additionalProperties": true, - "properties": { - "display": { - "$ref": "#/definitions/ComponentType" - }, - "id": { - "type": "integer" - }, - "priority": { - "$ref": "#/definitions/MessagePriorityEnumType" - }, - "state": { - "$ref": "#/definitions/MessageStateEnumType" - }, - "startDateTime": { - "type": "string", - "format": "date-time" - }, - "endDateTime": { - "type": "string", - "format": "date-time" - }, - "transactionId": { - "type": "string", - "maxLength": 36 - }, - "message": { - "$ref": "#/definitions/MessageContentType" - } - }, - "required": [ - "id", - "priority", - "message" - ] - } - }, - "type": "object", - "additionalProperties": true, - "properties": { - "messageInfo": { - "type": "array", - "additionalItems": false, - "items": { - "$ref": "#/definitions/MessageInfoType" - }, - "minItems": 1 - }, - "requestId": { - "type": "integer" - }, - "tbc": { - "type": "boolean" - } - }, - "required": [ - "requestId", - "tbc", - "messageInfo" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/NotifyDisplayMessagesResponse_v1p0.json b/ocpp/v20/schemas/NotifyDisplayMessagesResponse_v1p0.json deleted file mode 100644 index 49b69e9fd..000000000 --- a/ocpp/v20/schemas/NotifyDisplayMessagesResponse_v1p0.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true -} \ No newline at end of file diff --git a/ocpp/v20/schemas/NotifyEVChargingNeedsRequest_v1p0.json b/ocpp/v20/schemas/NotifyEVChargingNeedsRequest_v1p0.json deleted file mode 100644 index 6515826df..000000000 --- a/ocpp/v20/schemas/NotifyEVChargingNeedsRequest_v1p0.json +++ /dev/null @@ -1,124 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "definitions": { - "EnergyTransferModeEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "AC_single_phase_core", - "AC_three_phase_core", - "DC_combo_core", - "DC_core", - "DC_extended", - "DC_unique" - ] - }, - "ACChargingParametersType": { - "javaType": "ACChargingParameters", - "type": "object", - "additionalProperties": true, - "properties": { - "energyAmount": { - "type": "integer" - }, - "evMinCurrent": { - "type": "integer" - }, - "evMaxCurrent": { - "type": "integer" - }, - "evMaxVoltage": { - "type": "integer" - } - }, - "required": [ - "energyAmount", - "evMinCurrent", - "evMaxCurrent", - "evMaxVoltage" - ] - }, - "ChargingNeedsType": { - "javaType": "ChargingNeeds", - "type": "object", - "additionalProperties": true, - "properties": { - "acChargingParameters": { - "$ref": "#/definitions/ACChargingParametersType" - }, - "dcChargingParameters": { - "$ref": "#/definitions/DCChargingParametersType" - }, - "requestedEnergyTransfer": { - "$ref": "#/definitions/EnergyTransferModeEnumType" - }, - "departureTime": { - "type": "string", - "format": "date-time" - } - }, - "required": [ - "requestedEnergyTransfer" - ] - }, - "DCChargingParametersType": { - "javaType": "DCChargingParameters", - "type": "object", - "additionalProperties": true, - "properties": { - "evMaxCurrent": { - "type": "integer" - }, - "evMaxVoltage": { - "type": "integer" - }, - "energyAmount": { - "type": "integer" - }, - "evMaxPower": { - "type": "integer" - }, - "stateOfCharge": { - "type": "integer", - "minimum": 0.0, - "maximum": 100.0 - }, - "evEnergyCapacity": { - "type": "integer" - }, - "fullSoC": { - "type": "integer", - "minimum": 0.0, - "maximum": 100.0 - }, - "bulkSoC": { - "type": "integer", - "minimum": 0.0, - "maximum": 100.0 - } - }, - "required": [ - "evMaxCurrent", - "evMaxVoltage" - ] - } - }, - "type": "object", - "additionalProperties": true, - "properties": { - "maxScheduleTuples": { - "type": "integer" - }, - "chargingNeeds": { - "$ref": "#/definitions/ChargingNeedsType" - }, - "evseId": { - "type": "integer" - } - }, - "required": [ - "evseId", - "chargingNeeds" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/NotifyEVChargingNeedsResponse_v1p0.json b/ocpp/v20/schemas/NotifyEVChargingNeedsResponse_v1p0.json deleted file mode 100644 index 268f2a526..000000000 --- a/ocpp/v20/schemas/NotifyEVChargingNeedsResponse_v1p0.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "status": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Accepted", - "Rejected", - "Processing" - ] - } - }, - "required": [ - "status" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/NotifyEVChargingScheduleRequest_v1p0.json b/ocpp/v20/schemas/NotifyEVChargingScheduleRequest_v1p0.json deleted file mode 100644 index 1bc701127..000000000 --- a/ocpp/v20/schemas/NotifyEVChargingScheduleRequest_v1p0.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "definitions": { - "ChargingRateUnitEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "W", - "A" - ] - }, - "ChargingSchedulePeriodType": { - "javaType": "ChargingSchedulePeriod", - "type": "object", - "additionalProperties": true, - "properties": { - "startPeriod": { - "type": "integer" - }, - "limit": { - "type": "number" - }, - "numberPhases": { - "type": "integer" - }, - "phaseToUse": { - "type": "integer" - } - }, - "required": [ - "startPeriod", - "limit" - ] - }, - "ChargingScheduleType": { - "javaType": "ChargingSchedule", - "type": "object", - "additionalProperties": true, - "properties": { - "startSchedule": { - "type": "string", - "format": "date-time" - }, - "duration": { - "type": "integer" - }, - "chargingRateUnit": { - "$ref": "#/definitions/ChargingRateUnitEnumType" - }, - "chargingSchedulePeriod": { - "type": "array", - "additionalItems": false, - "items": { - "$ref": "#/definitions/ChargingSchedulePeriodType" - }, - "minItems": 1 - }, - "minChargingRate": { - "type": "number" - } - }, - "required": [ - "chargingRateUnit" - ] - } - }, - "type": "object", - "additionalProperties": true, - "properties": { - "timeBase": { - "type": "string", - "format": "date-time" - }, - "chargingSchedule": { - "$ref": "#/definitions/ChargingScheduleType" - }, - "evseId": { - "type": "integer" - } - }, - "required": [ - "timeBase", - "evseId", - "chargingSchedule" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/NotifyEVChargingScheduleResponse_v1p0.json b/ocpp/v20/schemas/NotifyEVChargingScheduleResponse_v1p0.json deleted file mode 100644 index 5cd67bdf0..000000000 --- a/ocpp/v20/schemas/NotifyEVChargingScheduleResponse_v1p0.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "status": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Accepted", - "Rejected" - ] - } - }, - "required": [ - "status" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/NotifyEventRequest_v1p0.json b/ocpp/v20/schemas/NotifyEventRequest_v1p0.json deleted file mode 100644 index dbb136f20..000000000 --- a/ocpp/v20/schemas/NotifyEventRequest_v1p0.json +++ /dev/null @@ -1,192 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "definitions": { - "EventTriggerEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Alerting", - "Delta", - "Periodic" - ] - }, - "MonitorEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "UpperThreshold", - "LowerThreshold", - "Delta", - "Periodic", - "PeriodicClockAligned" - ] - }, - "ComponentType": { - "javaType": "Component", - "type": "object", - "additionalProperties": true, - "properties": { - "evse": { - "$ref": "#/definitions/EVSEType" - }, - "name": { - "type": "string", - "maxLength": 50 - }, - "instance": { - "type": "string", - "maxLength": 50 - } - }, - "required": [ - "name" - ] - }, - "EventDataType": { - "javaType": "EventData", - "type": "object", - "additionalProperties": true, - "properties": { - "eventId": { - "type": "integer" - }, - "timestamp": { - "type": "string", - "format": "date-time" - }, - "trigger": { - "$ref": "#/definitions/EventTriggerEnumType" - }, - "cause": { - "type": "integer" - }, - "actualValue": { - "type": "string", - "maxLength": 1000 - }, - "techCode": { - "type": "string", - "maxLength": 50 - }, - "techInfo": { - "type": "string", - "maxLength": 500 - }, - "cleared": { - "type": "boolean" - }, - "component": { - "$ref": "#/definitions/ComponentType" - }, - "variable": { - "$ref": "#/definitions/VariableType" - }, - "variableMonitoringEvent": { - "$ref": "#/definitions/VariableMonitoringType" - } - }, - "required": [ - "eventId", - "timestamp", - "trigger", - "actualValue", - "cleared", - "component", - "variable" - ] - }, - "EVSEType": { - "javaType": "EVSE", - "type": "object", - "additionalProperties": true, - "properties": { - "id": { - "type": "integer" - }, - "connectorId": { - "type": "integer" - } - }, - "required": [ - "id" - ] - }, - "VariableMonitoringType": { - "javaType": "VariableMonitoring", - "type": "object", - "additionalProperties": true, - "properties": { - "id": { - "type": "integer" - }, - "value": { - "type": "number" - }, - "type": { - "$ref": "#/definitions/MonitorEnumType" - }, - "severity": { - "type": "integer" - }, - "transaction": { - "type": "boolean" - } - }, - "required": [ - "id", - "value", - "type", - "severity", - "transaction" - ] - }, - "VariableType": { - "javaType": "Variable", - "type": "object", - "additionalProperties": true, - "properties": { - "name": { - "type": "string", - "maxLength": 50 - }, - "instance": { - "type": "string", - "maxLength": 50 - } - }, - "required": [ - "name" - ] - } - }, - "type": "object", - "additionalProperties": true, - "properties": { - "generatedAt": { - "type": "string", - "format": "date-time" - }, - "tbc": { - "type": "boolean", - "default": "false" - }, - "seqNo": { - "type": "integer" - }, - "eventData": { - "type": "array", - "additionalItems": false, - "items": { - "$ref": "#/definitions/EventDataType" - }, - "minItems": 1 - } - }, - "required": [ - "generatedAt", - "tbc", - "seqNo", - "eventData" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/NotifyEventResponse_v1p0.json b/ocpp/v20/schemas/NotifyEventResponse_v1p0.json deleted file mode 100644 index 49b69e9fd..000000000 --- a/ocpp/v20/schemas/NotifyEventResponse_v1p0.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true -} \ No newline at end of file diff --git a/ocpp/v20/schemas/NotifyMonitoringReportRequest_v1p0.json b/ocpp/v20/schemas/NotifyMonitoringReportRequest_v1p0.json deleted file mode 100644 index ffb72d82d..000000000 --- a/ocpp/v20/schemas/NotifyMonitoringReportRequest_v1p0.json +++ /dev/null @@ -1,159 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "definitions": { - "MonitorEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "UpperThreshold", - "LowerThreshold", - "Delta", - "Periodic", - "PeriodicClockAligned" - ] - }, - "ComponentType": { - "javaType": "Component", - "type": "object", - "additionalProperties": true, - "properties": { - "evse": { - "$ref": "#/definitions/EVSEType" - }, - "name": { - "type": "string", - "maxLength": 50 - }, - "instance": { - "type": "string", - "maxLength": 50 - } - }, - "required": [ - "name" - ] - }, - "EVSEType": { - "javaType": "EVSE", - "type": "object", - "additionalProperties": true, - "properties": { - "id": { - "type": "integer" - }, - "connectorId": { - "type": "integer" - } - }, - "required": [ - "id" - ] - }, - "MonitoringDataType": { - "javaType": "MonitoringData", - "type": "object", - "additionalProperties": true, - "properties": { - "component": { - "$ref": "#/definitions/ComponentType" - }, - "variable": { - "$ref": "#/definitions/VariableType" - }, - "variableMonitoring": { - "type": "array", - "additionalItems": false, - "items": { - "$ref": "#/definitions/VariableMonitoringType" - }, - "minItems": 1 - } - }, - "required": [ - "component", - "variable", - "variableMonitoring" - ] - }, - "VariableMonitoringType": { - "javaType": "VariableMonitoring", - "type": "object", - "additionalProperties": true, - "properties": { - "id": { - "type": "integer" - }, - "value": { - "type": "number" - }, - "type": { - "$ref": "#/definitions/MonitorEnumType" - }, - "severity": { - "type": "integer" - }, - "transaction": { - "type": "boolean" - } - }, - "required": [ - "id", - "value", - "type", - "severity", - "transaction" - ] - }, - "VariableType": { - "javaType": "Variable", - "type": "object", - "additionalProperties": true, - "properties": { - "name": { - "type": "string", - "maxLength": 50 - }, - "instance": { - "type": "string", - "maxLength": 50 - } - }, - "required": [ - "name" - ] - } - }, - "type": "object", - "additionalProperties": true, - "properties": { - "monitor": { - "type": "array", - "additionalItems": false, - "items": { - "$ref": "#/definitions/MonitoringDataType" - }, - "minItems": 1 - }, - "requestId": { - "type": "integer" - }, - "tbc": { - "type": "boolean", - "default": "false" - }, - "seqNo": { - "type": "integer" - }, - "generatedAt": { - "type": "string", - "format": "date-time" - } - }, - "required": [ - "tbc", - "seqNo", - "generatedAt", - "monitor" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/NotifyMonitoringReportResponse_v1p0.json b/ocpp/v20/schemas/NotifyMonitoringReportResponse_v1p0.json deleted file mode 100644 index 49b69e9fd..000000000 --- a/ocpp/v20/schemas/NotifyMonitoringReportResponse_v1p0.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true -} \ No newline at end of file diff --git a/ocpp/v20/schemas/NotifyReportRequest_v1p0.json b/ocpp/v20/schemas/NotifyReportRequest_v1p0.json deleted file mode 100644 index e374d2a3f..000000000 --- a/ocpp/v20/schemas/NotifyReportRequest_v1p0.json +++ /dev/null @@ -1,215 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "definitions": { - "AttributeEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Actual", - "Target", - "MinSet", - "MaxSet" - ] - }, - "DataEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "string", - "decimal", - "integer", - "dateTime", - "boolean", - "OptionList", - "SequenceList", - "MemberList" - ] - }, - "MutabilityEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "ReadOnly", - "WriteOnly", - "ReadWrite" - ] - }, - "ComponentType": { - "javaType": "Component", - "type": "object", - "additionalProperties": true, - "properties": { - "evse": { - "$ref": "#/definitions/EVSEType" - }, - "name": { - "type": "string", - "maxLength": 50 - }, - "instance": { - "type": "string", - "maxLength": 50 - } - }, - "required": [ - "name" - ] - }, - "EVSEType": { - "javaType": "EVSE", - "type": "object", - "additionalProperties": true, - "properties": { - "id": { - "type": "integer" - }, - "connectorId": { - "type": "integer" - } - }, - "required": [ - "id" - ] - }, - "ReportDataType": { - "javaType": "ReportData", - "type": "object", - "additionalProperties": true, - "properties": { - "component": { - "$ref": "#/definitions/ComponentType" - }, - "variable": { - "$ref": "#/definitions/VariableType" - }, - "variableAttribute": { - "type": "array", - "additionalItems": false, - "items": { - "$ref": "#/definitions/VariableAttributeType" - }, - "minItems": 1, - "maxItems": 4 - }, - "variableCharacteristics": { - "$ref": "#/definitions/VariableCharacteristicsType" - } - }, - "required": [ - "component", - "variable", - "variableAttribute" - ] - }, - "VariableAttributeType": { - "javaType": "VariableAttribute", - "type": "object", - "additionalProperties": true, - "properties": { - "type": { - "$ref": "#/definitions/AttributeEnumType" - }, - "value": { - "type": "string", - "maxLength": 1000 - }, - "mutability": { - "$ref": "#/definitions/MutabilityEnumType" - }, - "persistence": { - "type": "boolean" - }, - "constant": { - "type": "boolean" - } - }, - "required": [ - "value", - "persistence", - "constant" - ] - }, - "VariableCharacteristicsType": { - "javaType": "VariableCharacteristics", - "type": "object", - "additionalProperties": true, - "properties": { - "unit": { - "type": "string", - "maxLength": 16 - }, - "dataType": { - "$ref": "#/definitions/DataEnumType" - }, - "minLimit": { - "type": "number" - }, - "maxLimit": { - "type": "number" - }, - "valuesList": { - "type": "string", - "maxLength": 1000 - }, - "supportsMonitoring": { - "type": "boolean" - } - }, - "required": [ - "dataType", - "supportsMonitoring" - ] - }, - "VariableType": { - "javaType": "Variable", - "type": "object", - "additionalProperties": true, - "properties": { - "name": { - "type": "string", - "maxLength": 50 - }, - "instance": { - "type": "string", - "maxLength": 50 - } - }, - "required": [ - "name" - ] - } - }, - "type": "object", - "additionalProperties": true, - "properties": { - "requestId": { - "type": "integer" - }, - "generatedAt": { - "type": "string", - "format": "date-time" - }, - "reportData": { - "type": "array", - "additionalItems": false, - "items": { - "$ref": "#/definitions/ReportDataType" - }, - "minItems": 1 - }, - "tbc": { - "type": "boolean", - "default": "false" - }, - "seqNo": { - "type": "integer" - } - }, - "required": [ - "generatedAt", - "tbc", - "seqNo", - "reportData" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/NotifyReportResponse_v1p0.json b/ocpp/v20/schemas/NotifyReportResponse_v1p0.json deleted file mode 100644 index 49b69e9fd..000000000 --- a/ocpp/v20/schemas/NotifyReportResponse_v1p0.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true -} \ No newline at end of file diff --git a/ocpp/v20/schemas/PublishFirmwareRequest_v1p0.json b/ocpp/v20/schemas/PublishFirmwareRequest_v1p0.json deleted file mode 100644 index dae0dd788..000000000 --- a/ocpp/v20/schemas/PublishFirmwareRequest_v1p0.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "location": { - "type": "string", - "maxLength": 512 - }, - "retries": { - "type": "integer" - }, - "checksum": { - "type": "string", - "maxLength": 32 - } - }, - "required": [ - "location", - "checksum" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/PublishFirmwareResponse_v1p0.json b/ocpp/v20/schemas/PublishFirmwareResponse_v1p0.json deleted file mode 100644 index 5cd67bdf0..000000000 --- a/ocpp/v20/schemas/PublishFirmwareResponse_v1p0.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "status": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Accepted", - "Rejected" - ] - } - }, - "required": [ - "status" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/PublishFirmwareStatusNotificationRequest_v1p0.json b/ocpp/v20/schemas/PublishFirmwareStatusNotificationRequest_v1p0.json deleted file mode 100644 index ec224a7bd..000000000 --- a/ocpp/v20/schemas/PublishFirmwareStatusNotificationRequest_v1p0.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "status": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Downloaded", - "DownloadFailed", - "Downloading", - "DownloadScheduled", - "DownloadPaused", - "PublishFailed", - "Published", - "InvalidChecksum", - "ChecksumVerified" - ] - }, - "location": { - "type": "string", - "maxLength": 512 - } - }, - "required": [ - "status" - ] -} diff --git a/ocpp/v20/schemas/PublishFirmwareStatusNotificationResponse_v1p0.json b/ocpp/v20/schemas/PublishFirmwareStatusNotificationResponse_v1p0.json deleted file mode 100644 index 49b69e9fd..000000000 --- a/ocpp/v20/schemas/PublishFirmwareStatusNotificationResponse_v1p0.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true -} \ No newline at end of file diff --git a/ocpp/v20/schemas/Renegotiate15118ScheduleRequest_v1p0.json b/ocpp/v20/schemas/Renegotiate15118ScheduleRequest_v1p0.json deleted file mode 100644 index 6ed92a5ac..000000000 --- a/ocpp/v20/schemas/Renegotiate15118ScheduleRequest_v1p0.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "definitions": { - "EVSEType": { - "javaType": "EVSE", - "type": "object", - "additionalProperties": true, - "properties": { - "id": { - "type": "integer" - }, - "connectorId": { - "type": "integer" - } - }, - "required": [ - "id" - ] - } - }, - "type": "object", - "additionalProperties": true, - "properties": { - "evse": { - "$ref": "#/definitions/EVSEType" - } - }, - "required": [ - "evse" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/Renegotiate15118ScheduleResponse_v1p0.json b/ocpp/v20/schemas/Renegotiate15118ScheduleResponse_v1p0.json deleted file mode 100644 index 5cd67bdf0..000000000 --- a/ocpp/v20/schemas/Renegotiate15118ScheduleResponse_v1p0.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "status": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Accepted", - "Rejected" - ] - } - }, - "required": [ - "status" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/ReportChargingProfilesRequest_v1p0.json b/ocpp/v20/schemas/ReportChargingProfilesRequest_v1p0.json deleted file mode 100644 index f2e4eac81..000000000 --- a/ocpp/v20/schemas/ReportChargingProfilesRequest_v1p0.json +++ /dev/null @@ -1,182 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "definitions": { - "ChargingLimitSourceEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "EMS", - "Other", - "SO", - "CSO" - ] - }, - "ChargingProfileKindEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Absolute", - "Recurring", - "Relative" - ] - }, - "ChargingProfilePurposeEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "ChargingStationExternalConstraints", - "ChargingStationMaxProfile", - "TxDefaultProfile", - "TxProfile" - ] - }, - "ChargingRateUnitEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "W", - "A" - ] - }, - "RecurrencyKindEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Daily", - "Weekly" - ] - }, - "ChargingProfileType": { - "javaType": "ChargingProfile", - "type": "object", - "additionalProperties": true, - "properties": { - "id": { - "type": "integer" - }, - "stackLevel": { - "type": "integer" - }, - "primary": { - "type": "boolean" - }, - "chargingProfilePurpose": { - "$ref": "#/definitions/ChargingProfilePurposeEnumType" - }, - "chargingProfileKind": { - "$ref": "#/definitions/ChargingProfileKindEnumType" - }, - "recurrencyKind": { - "$ref": "#/definitions/RecurrencyKindEnumType" - }, - "validFrom": { - "type": "string", - "format": "date-time" - }, - "validTo": { - "type": "string", - "format": "date-time" - }, - "chargingSchedule": { - "$ref": "#/definitions/ChargingScheduleType" - }, - "transactionId": { - "type": "string", - "maxLength": 36 - } - }, - "required": [ - "id", - "stackLevel", - "chargingProfilePurpose", - "chargingProfileKind", - "chargingSchedule" - ] - }, - "ChargingSchedulePeriodType": { - "javaType": "ChargingSchedulePeriod", - "type": "object", - "additionalProperties": true, - "properties": { - "startPeriod": { - "type": "integer" - }, - "limit": { - "type": "number" - }, - "numberPhases": { - "type": "integer" - }, - "phaseToUse": { - "type": "integer" - } - }, - "required": [ - "startPeriod", - "limit" - ] - }, - "ChargingScheduleType": { - "javaType": "ChargingSchedule", - "type": "object", - "additionalProperties": true, - "properties": { - "startSchedule": { - "type": "string", - "format": "date-time" - }, - "duration": { - "type": "integer" - }, - "chargingRateUnit": { - "$ref": "#/definitions/ChargingRateUnitEnumType" - }, - "chargingSchedulePeriod": { - "type": "array", - "additionalItems": false, - "items": { - "$ref": "#/definitions/ChargingSchedulePeriodType" - }, - "minItems": 1 - }, - "minChargingRate": { - "type": "number" - } - }, - "required": [ - "chargingRateUnit", - "chargingSchedulePeriod" - ] - } - }, - "type": "object", - "additionalProperties": true, - "properties": { - "requestId": { - "type": "integer" - }, - "chargingLimitSource": { - "$ref": "#/definitions/ChargingLimitSourceEnumType" - }, - "chargingProfile": { - "type": "array", - "additionalItems": false, - "items": { - "$ref": "#/definitions/ChargingProfileType" - }, - "minItems": 1 - }, - "tbc": { - "type": "boolean" - }, - "evseId": { - "type": "integer" - } - }, - "required": [ - "chargingLimitSource", - "evseId", - "chargingProfile" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/ReportChargingProfilesResponse_v1p0.json b/ocpp/v20/schemas/ReportChargingProfilesResponse_v1p0.json deleted file mode 100644 index 49b69e9fd..000000000 --- a/ocpp/v20/schemas/ReportChargingProfilesResponse_v1p0.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true -} \ No newline at end of file diff --git a/ocpp/v20/schemas/RequestStartTransactionRequest_v1p0.json b/ocpp/v20/schemas/RequestStartTransactionRequest_v1p0.json deleted file mode 100644 index 5305d28dd..000000000 --- a/ocpp/v20/schemas/RequestStartTransactionRequest_v1p0.json +++ /dev/null @@ -1,221 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "definitions": { - "ChargingProfileKindEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Absolute", - "Recurring", - "Relative" - ] - }, - "ChargingProfilePurposeEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "ChargingStationExternalConstraints", - "ChargingStationMaxProfile", - "TxDefaultProfile", - "TxProfile" - ] - }, - "ChargingRateUnitEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "W", - "A" - ] - }, - "IdTokenEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Central", - "eMAID", - "ISO14443", - "KeyCode", - "Local", - "NoAuthorization", - "ISO15693" - ] - }, - "RecurrencyKindEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Daily", - "Weekly" - ] - }, - "AdditionalInfoType": { - "javaType": "AdditionalInfo", - "type": "object", - "additionalProperties": true, - "properties": { - "additionalIdToken": { - "type": "string", - "maxLength": 36 - }, - "type": { - "type": "string", - "maxLength": 50 - } - }, - "required": [ - "additionalIdToken", - "type" - ] - }, - "ChargingProfileType": { - "javaType": "ChargingProfile", - "type": "object", - "additionalProperties": true, - "properties": { - "id": { - "type": "integer" - }, - "stackLevel": { - "type": "integer" - }, - "primary": { - "type": "boolean" - }, - "chargingProfilePurpose": { - "$ref": "#/definitions/ChargingProfilePurposeEnumType" - }, - "chargingProfileKind": { - "$ref": "#/definitions/ChargingProfileKindEnumType" - }, - "recurrencyKind": { - "$ref": "#/definitions/RecurrencyKindEnumType" - }, - "validFrom": { - "type": "string", - "format": "date-time" - }, - "validTo": { - "type": "string", - "format": "date-time" - }, - "chargingSchedule": { - "$ref": "#/definitions/ChargingScheduleType" - }, - "transactionId": { - "type": "string", - "maxLength": 36 - } - }, - "required": [ - "id", - "stackLevel", - "chargingProfilePurpose", - "chargingProfileKind", - "chargingSchedule" - ] - }, - "ChargingSchedulePeriodType": { - "javaType": "ChargingSchedulePeriod", - "type": "object", - "additionalProperties": true, - "properties": { - "startPeriod": { - "type": "integer" - }, - "limit": { - "type": "number" - }, - "numberPhases": { - "type": "integer" - }, - "phaseToUse": { - "type": "integer" - } - }, - "required": [ - "startPeriod", - "limit" - ] - }, - "ChargingScheduleType": { - "javaType": "ChargingSchedule", - "type": "object", - "additionalProperties": true, - "properties": { - "startSchedule": { - "type": "string", - "format": "date-time" - }, - "duration": { - "type": "integer" - }, - "chargingRateUnit": { - "$ref": "#/definitions/ChargingRateUnitEnumType" - }, - "chargingSchedulePeriod": { - "type": "array", - "additionalItems": false, - "items": { - "$ref": "#/definitions/ChargingSchedulePeriodType" - }, - "minItems": 1 - }, - "minChargingRate": { - "type": "number" - } - }, - "required": [ - "chargingRateUnit", - "chargingSchedulePeriod" - ] - }, - "IdTokenType": { - "javaType": "IdToken", - "type": "object", - "additionalProperties": true, - "properties": { - "additionalInfo": { - "type": "array", - "additionalItems": false, - "items": { - "$ref": "#/definitions/AdditionalInfoType" - }, - "minItems": 1 - }, - "idToken": { - "type": "string", - "maxLength": 36 - }, - "type": { - "$ref": "#/definitions/IdTokenEnumType" - } - }, - "required": [ - "idToken", - "type" - ] - } - }, - "type": "object", - "additionalProperties": true, - "properties": { - "evseId": { - "type": "integer" - }, - "idToken": { - "$ref": "#/definitions/IdTokenType" - }, - "remoteStartId": { - "type": "integer" - }, - "chargingProfile": { - "$ref": "#/definitions/ChargingProfileType" - } - }, - "required": [ - "remoteStartId", - "idToken" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/RequestStartTransactionResponse_v1p0.json b/ocpp/v20/schemas/RequestStartTransactionResponse_v1p0.json deleted file mode 100644 index 3ed196659..000000000 --- a/ocpp/v20/schemas/RequestStartTransactionResponse_v1p0.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "status": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Accepted", - "Rejected" - ] - }, - "transactionId": { - "type": "string", - "maxLength": 36 - } - }, - "required": [ - "status" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/RequestStopTransactionRequest_v1p0.json b/ocpp/v20/schemas/RequestStopTransactionRequest_v1p0.json deleted file mode 100644 index c07587106..000000000 --- a/ocpp/v20/schemas/RequestStopTransactionRequest_v1p0.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "transactionId": { - "type": "string", - "maxLength": 36 - } - }, - "required": [ - "transactionId" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/RequestStopTransactionResponse_v1p0.json b/ocpp/v20/schemas/RequestStopTransactionResponse_v1p0.json deleted file mode 100644 index 5cd67bdf0..000000000 --- a/ocpp/v20/schemas/RequestStopTransactionResponse_v1p0.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "status": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Accepted", - "Rejected" - ] - } - }, - "required": [ - "status" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/ReservationStatusUpdateRequest_v1p0.json b/ocpp/v20/schemas/ReservationStatusUpdateRequest_v1p0.json deleted file mode 100644 index 615f9cad6..000000000 --- a/ocpp/v20/schemas/ReservationStatusUpdateRequest_v1p0.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "reservationId": { - "type": "integer" - }, - "reservationUpdateStatus": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Expired", - "Removed" - ] - } - }, - "required": [ - "reservationId", - "reservationUpdateStatus" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/ReservationStatusUpdateResponse_v1p0.json b/ocpp/v20/schemas/ReservationStatusUpdateResponse_v1p0.json deleted file mode 100644 index 49b69e9fd..000000000 --- a/ocpp/v20/schemas/ReservationStatusUpdateResponse_v1p0.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true -} \ No newline at end of file diff --git a/ocpp/v20/schemas/ReserveNowRequest_v1p0.json b/ocpp/v20/schemas/ReserveNowRequest_v1p0.json deleted file mode 100644 index f0198bcdf..000000000 --- a/ocpp/v20/schemas/ReserveNowRequest_v1p0.json +++ /dev/null @@ -1,150 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "definitions": { - "ConnectorEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "cCCS1", - "cCCS2", - "cG105", - "cTesla", - "cType1", - "cType2", - "s309-1P-16A", - "s309-1P-32A", - "s309-3P-16A", - "s309-3P-32A", - "sBS1361", - "sCEE-7-7", - "sType2", - "sType3", - "Other1PhMax16A", - "Other1PhOver16A", - "Other3Ph", - "Pan", - "wInductive", - "wResonant", - "Undetermined", - "Unknown" - ] - }, - "IdTokenEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Central", - "eMAID", - "ISO14443", - "KeyCode", - "Local", - "NoAuthorization", - "ISO15693" - ] - }, - "AdditionalInfoType": { - "javaType": "AdditionalInfo", - "type": "object", - "additionalProperties": true, - "properties": { - "additionalIdToken": { - "type": "string", - "maxLength": 36 - }, - "type": { - "type": "string", - "maxLength": 50 - } - }, - "required": [ - "additionalIdToken", - "type" - ] - }, - "EVSEType": { - "javaType": "EVSE", - "type": "object", - "additionalProperties": true, - "properties": { - "id": { - "type": "integer" - }, - "connectorId": { - "type": "integer" - } - }, - "required": [ - "id" - ] - }, - "IdTokenType": { - "javaType": "IdToken", - "type": "object", - "additionalProperties": true, - "properties": { - "additionalInfo": { - "type": "array", - "additionalItems": false, - "items": { - "$ref": "#/definitions/AdditionalInfoType" - }, - "minItems": 1 - }, - "idToken": { - "type": "string", - "maxLength": 36 - }, - "type": { - "$ref": "#/definitions/IdTokenEnumType" - } - }, - "required": [ - "idToken", - "type" - ] - }, - "ReservationType": { - "javaType": "Reservation", - "type": "object", - "additionalProperties": true, - "properties": { - "evse": { - "$ref": "#/definitions/EVSEType" - }, - "id": { - "type": "integer" - }, - "expiryDateTime": { - "type": "string", - "format": "date-time" - }, - "connectorCode": { - "$ref": "#/definitions/ConnectorEnumType" - } - }, - "required": [ - "id", - "expiryDateTime", - "evse" - ] - } - }, - "type": "object", - "additionalProperties": true, - "properties": { - "idToken": { - "$ref": "#/definitions/IdTokenType" - }, - "groupIdToken": { - "$ref": "#/definitions/IdTokenType" - }, - "reservation": { - "$ref": "#/definitions/ReservationType" - } - }, - "required": [ - "idToken", - "reservation" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/ReserveNowResponse_v1p0.json b/ocpp/v20/schemas/ReserveNowResponse_v1p0.json deleted file mode 100644 index da6ea53ac..000000000 --- a/ocpp/v20/schemas/ReserveNowResponse_v1p0.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "status": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Accepted", - "Faulted", - "Occupied", - "Rejected", - "Unavailable" - ] - } - }, - "required": [ - "status" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/ResetRequest_v1p0.json b/ocpp/v20/schemas/ResetRequest_v1p0.json deleted file mode 100644 index c52f98a68..000000000 --- a/ocpp/v20/schemas/ResetRequest_v1p0.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "type": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Immediate", - "OnIdle" - ] - } - }, - "required": [ - "type" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/ResetResponse_v1p0.json b/ocpp/v20/schemas/ResetResponse_v1p0.json deleted file mode 100644 index e839d6d2d..000000000 --- a/ocpp/v20/schemas/ResetResponse_v1p0.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "status": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Accepted", - "Rejected", - "Scheduled" - ] - } - }, - "required": [ - "status" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/SecurityEventNotificationRequest_v1p0.json b/ocpp/v20/schemas/SecurityEventNotificationRequest_v1p0.json deleted file mode 100644 index d2ea5defe..000000000 --- a/ocpp/v20/schemas/SecurityEventNotificationRequest_v1p0.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "type": { - "type": "string", - "additionalProperties": true, - "enum": [ - "FirmwareUpdated", - "FailedToAuthenticateAtCsms", - "CsmsFailedToAuthenticate", - "SettingSystemTime", - "StartupOfTheDevice", - "ResetOrReboot", - "SecurityLogWasCleared", - "ReconfigurationOfSecurityParameters", - "MemoryExhaustion", - "InvalidMessages", - "AttemptedReplayAttacks", - "TamperDetectionActivated", - "InvalidFirmwareSignature", - "InvalidFirmwareSigningCertificate", - "InvalidCsmsCertificate", - "InvalidChargingStationCertificate", - "InvalidTLSVersion", - "InvalidTLSCipherSuite" - ] - }, - "timestamp": { - "type": "string", - "format": "date-time" - } - }, - "required": [ - "type", - "timestamp" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/SecurityEventNotificationResponse_v1p0.json b/ocpp/v20/schemas/SecurityEventNotificationResponse_v1p0.json deleted file mode 100644 index 49b69e9fd..000000000 --- a/ocpp/v20/schemas/SecurityEventNotificationResponse_v1p0.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true -} \ No newline at end of file diff --git a/ocpp/v20/schemas/SendLocalListRequest_v1p0.json b/ocpp/v20/schemas/SendLocalListRequest_v1p0.json deleted file mode 100644 index 6482dc2e2..000000000 --- a/ocpp/v20/schemas/SendLocalListRequest_v1p0.json +++ /dev/null @@ -1,210 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "definitions": { - "AuthorizationStatusEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Accepted", - "Blocked", - "ConcurrentTx", - "Expired", - "Invalid", - "NoCredit", - "NotAllowedTypeEVSE", - "NotAtThisLocation", - "NotAtThisTime", - "Unknown" - ] - }, - "IdTokenEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Central", - "eMAID", - "ISO14443", - "KeyCode", - "Local", - "NoAuthorization", - "ISO15693" - ] - }, - "MessageFormatEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "ASCII", - "HTML", - "URI", - "UTF8" - ] - }, - "UpdateEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Differential", - "Full" - ] - }, - "AdditionalInfoType": { - "javaType": "AdditionalInfo", - "type": "object", - "additionalProperties": true, - "properties": { - "additionalIdToken": { - "type": "string", - "maxLength": 36 - }, - "type": { - "type": "string", - "maxLength": 50 - } - }, - "required": [ - "additionalIdToken", - "type" - ] - }, - "AuthorizationData": { - "javaType": "AuthorizationData", - "type": "object", - "additionalProperties": true, - "properties": { - "idToken": { - "$ref": "#/definitions/IdTokenType" - }, - "idTokenInfo": { - "$ref": "#/definitions/IdTokenInfoType" - } - }, - "required": [ - "idToken" - ] - }, - "GroupIdTokenType": { - "javaType": "GroupIdToken", - "type": "object", - "additionalProperties": true, - "properties": { - "idToken": { - "type": "string", - "maxLength": 36 - }, - "type": { - "$ref": "#/definitions/IdTokenEnumType" - } - }, - "required": [ - "idToken", - "type" - ] - }, - "IdTokenInfoType": { - "javaType": "IdTokenInfo", - "type": "object", - "additionalProperties": true, - "properties": { - "status": { - "$ref": "#/definitions/AuthorizationStatusEnumType" - }, - "cacheExpiryDateTime": { - "type": "string", - "format": "date-time" - }, - "chargingPriority": { - "type": "integer" - }, - "groupIdToken": { - "$ref": "#/definitions/GroupIdTokenType" - }, - "language1": { - "type": "string", - "maxLength": 8 - }, - "language2": { - "type": "string", - "maxLength": 8 - }, - "personalMessage": { - "$ref": "#/definitions/MessageContentType" - } - }, - "required": [ - "status" - ] - }, - "IdTokenType": { - "javaType": "IdToken", - "type": "object", - "additionalProperties": true, - "properties": { - "additionalInfo": { - "type": "array", - "additionalItems": false, - "items": { - "$ref": "#/definitions/AdditionalInfoType" - }, - "minItems": 1 - }, - "idToken": { - "type": "string", - "maxLength": 36 - }, - "type": { - "$ref": "#/definitions/IdTokenEnumType" - } - }, - "required": [ - "idToken", - "type" - ] - }, - "MessageContentType": { - "javaType": "MessageContent", - "type": "object", - "additionalProperties": true, - "properties": { - "format": { - "$ref": "#/definitions/MessageFormatEnumType" - }, - "language": { - "type": "string", - "maxLength": 8 - }, - "content": { - "type": "string", - "maxLength": 512 - } - }, - "required": [ - "format", - "content" - ] - } - }, - "type": "object", - "additionalProperties": true, - "properties": { - "localAuthorizationList": { - "type": "array", - "additionalItems": false, - "items": { - "$ref": "#/definitions/AuthorizationData" - }, - "minItems": 1 - }, - "versionNumber": { - "type": "integer" - }, - "updateType": { - "$ref": "#/definitions/UpdateEnumType" - } - }, - "required": [ - "versionNumber", - "updateType" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/SendLocalListResponse_v1p0.json b/ocpp/v20/schemas/SendLocalListResponse_v1p0.json deleted file mode 100644 index 8fd3949aa..000000000 --- a/ocpp/v20/schemas/SendLocalListResponse_v1p0.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "status": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Accepted", - "Failed", - "VersionMismatch" - ] - } - }, - "required": [ - "status" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/SetChargingProfileRequest_v1p0.json b/ocpp/v20/schemas/SetChargingProfileRequest_v1p0.json deleted file mode 100644 index bdf6023d8..000000000 --- a/ocpp/v20/schemas/SetChargingProfileRequest_v1p0.json +++ /dev/null @@ -1,157 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "definitions": { - "ChargingProfileKindEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Absolute", - "Recurring", - "Relative" - ] - }, - "ChargingProfilePurposeEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "ChargingStationExternalConstraints", - "ChargingStationMaxProfile", - "TxDefaultProfile", - "TxProfile" - ] - }, - "ChargingRateUnitEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "W", - "A" - ] - }, - "RecurrencyKindEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Daily", - "Weekly" - ] - }, - "ChargingProfileType": { - "javaType": "ChargingProfile", - "type": "object", - "additionalProperties": true, - "properties": { - "id": { - "type": "integer" - }, - "stackLevel": { - "type": "integer" - }, - "primary": { - "type": "boolean" - }, - "chargingProfilePurpose": { - "$ref": "#/definitions/ChargingProfilePurposeEnumType" - }, - "chargingProfileKind": { - "$ref": "#/definitions/ChargingProfileKindEnumType" - }, - "recurrencyKind": { - "$ref": "#/definitions/RecurrencyKindEnumType" - }, - "validFrom": { - "type": "string", - "format": "date-time" - }, - "validTo": { - "type": "string", - "format": "date-time" - }, - "chargingSchedule": { - "$ref": "#/definitions/ChargingScheduleType" - }, - "transactionId": { - "type": "string", - "maxLength": 36 - } - }, - "required": [ - "id", - "stackLevel", - "chargingProfilePurpose", - "chargingProfileKind", - "chargingSchedule" - ] - }, - "ChargingSchedulePeriodType": { - "javaType": "ChargingSchedulePeriod", - "type": "object", - "additionalProperties": true, - "properties": { - "startPeriod": { - "type": "integer" - }, - "limit": { - "type": "number" - }, - "numberPhases": { - "type": "integer" - }, - "phaseToUse": { - "type": "integer" - } - }, - "required": [ - "startPeriod", - "limit" - ] - }, - "ChargingScheduleType": { - "javaType": "ChargingSchedule", - "type": "object", - "additionalProperties": true, - "properties": { - "startSchedule": { - "type": "string", - "format": "date-time" - }, - "duration": { - "type": "integer" - }, - "chargingRateUnit": { - "$ref": "#/definitions/ChargingRateUnitEnumType" - }, - "chargingSchedulePeriod": { - "type": "array", - "additionalItems": false, - "items": { - "$ref": "#/definitions/ChargingSchedulePeriodType" - }, - "minItems": 1 - }, - "minChargingRate": { - "type": "number" - } - }, - "required": [ - "chargingRateUnit", - "chargingSchedulePeriod" - ] - } - }, - "type": "object", - "additionalProperties": true, - "properties": { - "evseId": { - "type": "integer" - }, - "chargingProfile": { - "$ref": "#/definitions/ChargingProfileType" - } - }, - "required": [ - "evseId", - "chargingProfile" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/SetChargingProfileResponse_v1p0.json b/ocpp/v20/schemas/SetChargingProfileResponse_v1p0.json deleted file mode 100644 index 5cd67bdf0..000000000 --- a/ocpp/v20/schemas/SetChargingProfileResponse_v1p0.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "status": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Accepted", - "Rejected" - ] - } - }, - "required": [ - "status" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/SetDisplayMessageRequest_v1p0.json b/ocpp/v20/schemas/SetDisplayMessageRequest_v1p0.json deleted file mode 100644 index 24dcf89ab..000000000 --- a/ocpp/v20/schemas/SetDisplayMessageRequest_v1p0.json +++ /dev/null @@ -1,143 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "definitions": { - "MessageFormatEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "ASCII", - "HTML", - "URI", - "UTF8" - ] - }, - "MessagePriorityEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "AlwaysFront", - "InFront", - "NormalCycle" - ] - }, - "MessageStateEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Charging", - "Faulted", - "Idle", - "Unavailable" - ] - }, - "ComponentType": { - "javaType": "Component", - "type": "object", - "additionalProperties": true, - "properties": { - "evse": { - "$ref": "#/definitions/EVSEType" - }, - "name": { - "type": "string", - "maxLength": 50 - }, - "instance": { - "type": "string", - "maxLength": 50 - } - }, - "required": [ - "name" - ] - }, - "EVSEType": { - "javaType": "EVSE", - "type": "object", - "additionalProperties": true, - "properties": { - "id": { - "type": "integer" - }, - "connectorId": { - "type": "integer" - } - }, - "required": [ - "id" - ] - }, - "MessageContentType": { - "javaType": "MessageContent", - "type": "object", - "additionalProperties": true, - "properties": { - "format": { - "$ref": "#/definitions/MessageFormatEnumType" - }, - "language": { - "type": "string", - "maxLength": 8 - }, - "content": { - "type": "string", - "maxLength": 512 - } - }, - "required": [ - "format", - "content" - ] - }, - "MessageInfoType": { - "javaType": "MessageInfo", - "type": "object", - "additionalProperties": true, - "properties": { - "display": { - "$ref": "#/definitions/ComponentType" - }, - "id": { - "type": "integer" - }, - "priority": { - "$ref": "#/definitions/MessagePriorityEnumType" - }, - "state": { - "$ref": "#/definitions/MessageStateEnumType" - }, - "startDateTime": { - "type": "string", - "format": "date-time" - }, - "endDateTime": { - "type": "string", - "format": "date-time" - }, - "transactionId": { - "type": "string", - "maxLength": 36 - }, - "message": { - "$ref": "#/definitions/MessageContentType" - } - }, - "required": [ - "id", - "priority", - "message" - ] - } - }, - "type": "object", - "additionalProperties": true, - "properties": { - "message": { - "$ref": "#/definitions/MessageInfoType" - } - }, - "required": [ - "message" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/SetDisplayMessageResponse_v1p0.json b/ocpp/v20/schemas/SetDisplayMessageResponse_v1p0.json deleted file mode 100644 index a2a5431c4..000000000 --- a/ocpp/v20/schemas/SetDisplayMessageResponse_v1p0.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "status": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Accepted", - "NotSupportedMessageFormat", - "Rejected", - "NotSupportedPriority", - "NotSupportedState", - "UnknownTransaction" - ] - } - }, - "required": [ - "status" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/SetMonitoringBaseRequest_v1p0.json b/ocpp/v20/schemas/SetMonitoringBaseRequest_v1p0.json deleted file mode 100644 index 7808ad5f1..000000000 --- a/ocpp/v20/schemas/SetMonitoringBaseRequest_v1p0.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "monitoringBase": { - "type": "string", - "additionalProperties": true, - "enum": [ - "All", - "FactoryDefault", - "None" - ] - } - }, - "required": [ - "monitoringBase" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/SetMonitoringBaseResponse_v1p0.json b/ocpp/v20/schemas/SetMonitoringBaseResponse_v1p0.json deleted file mode 100644 index 59370c308..000000000 --- a/ocpp/v20/schemas/SetMonitoringBaseResponse_v1p0.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "status": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Accepted", - "Rejected", - "NotSupported" - ] - } - }, - "required": [ - "status" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/SetMonitoringLevelRequest_v1p0.json b/ocpp/v20/schemas/SetMonitoringLevelRequest_v1p0.json deleted file mode 100644 index 723338a6d..000000000 --- a/ocpp/v20/schemas/SetMonitoringLevelRequest_v1p0.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "severity": { - "type": "integer" - } - }, - "required": [ - "severity" - ] -} - diff --git a/ocpp/v20/schemas/SetMonitoringLevelResponse_v1p0.json b/ocpp/v20/schemas/SetMonitoringLevelResponse_v1p0.json deleted file mode 100644 index 8b143014a..000000000 --- a/ocpp/v20/schemas/SetMonitoringLevelResponse_v1p0.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "status": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Accepted", - "Rejected" - ] - } - }, - "required": [ - "status" - ] -} - diff --git a/ocpp/v20/schemas/SetNetworkProfileRequest_v1p0.json b/ocpp/v20/schemas/SetNetworkProfileRequest_v1p0.json deleted file mode 100644 index 3972a9380..000000000 --- a/ocpp/v20/schemas/SetNetworkProfileRequest_v1p0.json +++ /dev/null @@ -1,181 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "definitions": { - "APNAuthenticationEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "CHAP", - "NONE", - "PAP", - "AUTO" - ] - }, - "OCPPInterfaceEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Wired0", - "Wired1", - "Wired2", - "Wired3", - "Wireless0", - "Wireless1", - "Wireless2", - "Wireless3" - ] - }, - "OCPPTransportEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "JSON", - "SOAP" - ] - }, - "OCPPVersionEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "OCPP12", - "OCPP15", - "OCPP16", - "OCPP20" - ] - }, - "VPNEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "IKEv2", - "IPSec", - "L2TP", - "PPTP" - ] - }, - "APNType": { - "javaType": "APN", - "type": "object", - "additionalProperties": true, - "properties": { - "apn": { - "type": "string", - "maxLength": 512 - }, - "apnUserName": { - "type": "string", - "maxLength": 20 - }, - "apnPassword": { - "type": "string", - "maxLength": 20 - }, - "simPin": { - "type": "integer" - }, - "preferredNetwork": { - "type": "string", - "maxLength": 6 - }, - "useOnlyPreferredNetwork": { - "type": "boolean" - }, - "apnAuthentication": { - "$ref": "#/definitions/APNAuthenticationEnumType" - } - }, - "required": [ - "apn", - "apnAuthentication" - ] - }, - "NetworkConnectionProfileType": { - "javaType": "NetworkConnectionProfile", - "type": "object", - "additionalProperties": true, - "properties": { - "apn": { - "$ref": "#/definitions/APNType" - }, - "ocppVersion": { - "$ref": "#/definitions/OCPPVersionEnumType" - }, - "ocppTransport": { - "$ref": "#/definitions/OCPPTransportEnumType" - }, - "ocppCsmsUrl": { - "type": "string", - "maxLength": 512 - }, - "messageTimeout": { - "type": "integer" - }, - "ocppInterface": { - "$ref": "#/definitions/OCPPInterfaceEnumType" - }, - "vpn": { - "$ref": "#/definitions/VPNType" - } - }, - "required": [ - "ocppVersion", - "ocppTransport", - "ocppCsmsUrl", - "messageTimeout", - "ocppInterface" - ] - }, - "VPNType": { - "javaType": "VPN", - "type": "object", - "additionalProperties": true, - "properties": { - "server": { - "type": "string", - "maxLength": 512 - }, - "user": { - "type": "string", - "maxLength": 20 - }, - "group": { - "type": "string", - "maxLength": 20 - }, - "password": { - "type": "string", - "maxLength": 20 - }, - "key": { - "type": "string", - "maxLength": 255 - }, - "type": { - "$ref": "#/definitions/VPNEnumType" - } - }, - "required": [ - "server", - "user", - "password", - "key", - "type" - ] - } - }, - "type": "object", - "additionalProperties": true, - "properties": { - "configurationSlot": { - "type": "integer" - }, - "connectionData": { - "$ref": "#/definitions/NetworkConnectionProfileType" - } - }, - "required": [ - "configurationSlot", - "connectionData" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/SetNetworkProfileResponse_v1p0.json b/ocpp/v20/schemas/SetNetworkProfileResponse_v1p0.json deleted file mode 100644 index 896af00ac..000000000 --- a/ocpp/v20/schemas/SetNetworkProfileResponse_v1p0.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "status": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Accepted", - "Rejected", - "Failed" - ] - } - }, - "required": [ - "status" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/SetVariableMonitoringRequest_v1p0.json b/ocpp/v20/schemas/SetVariableMonitoringRequest_v1p0.json deleted file mode 100644 index 8f45e028b..000000000 --- a/ocpp/v20/schemas/SetVariableMonitoringRequest_v1p0.json +++ /dev/null @@ -1,122 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "definitions": { - "MonitorEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "UpperThreshold", - "LowerThreshold", - "Delta", - "Periodic", - "PeriodicClockAligned" - ] - }, - "ComponentType": { - "javaType": "Component", - "type": "object", - "additionalProperties": true, - "properties": { - "evse": { - "$ref": "#/definitions/EVSEType" - }, - "name": { - "type": "string", - "maxLength": 50 - }, - "instance": { - "type": "string", - "maxLength": 50 - } - }, - "required": [ - "name" - ] - }, - "EVSEType": { - "javaType": "EVSE", - "type": "object", - "additionalProperties": true, - "properties": { - "id": { - "type": "integer" - }, - "connectorId": { - "type": "integer" - } - }, - "required": [ - "id" - ] - }, - "SetMonitoringDataType": { - "javaType": "SetMonitoringData", - "type": "object", - "additionalProperties": true, - "properties": { - "id": { - "type": "integer" - }, - "value": { - "type": "number" - }, - "type": { - "$ref": "#/definitions/MonitorEnumType" - }, - "severity": { - "type": "integer" - }, - "transaction": { - "type": "boolean" - }, - "component": { - "$ref": "#/definitions/ComponentType" - }, - "variable": { - "$ref": "#/definitions/VariableType" - } - }, - "required": [ - "value", - "type", - "severity", - "component", - "variable" - ] - }, - "VariableType": { - "javaType": "Variable", - "type": "object", - "additionalProperties": true, - "properties": { - "name": { - "type": "string", - "maxLength": 50 - }, - "instance": { - "type": "string", - "maxLength": 50 - } - }, - "required": [ - "name" - ] - } - }, - "type": "object", - "additionalProperties": true, - "properties": { - "setMonitoringData": { - "type": "array", - "additionalItems": false, - "items": { - "$ref": "#/definitions/SetMonitoringDataType" - }, - "minItems": 1 - } - }, - "required": [ - "setMonitoringData" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/SetVariableMonitoringResponse_v1p0.json b/ocpp/v20/schemas/SetVariableMonitoringResponse_v1p0.json deleted file mode 100644 index 07d93730f..000000000 --- a/ocpp/v20/schemas/SetVariableMonitoringResponse_v1p0.json +++ /dev/null @@ -1,132 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "definitions": { - "MonitorEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "UpperThreshold", - "LowerThreshold", - "Delta", - "Periodic", - "PeriodicClockAligned" - ] - }, - "SetMonitoringStatusEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Accepted", - "UnknownComponent", - "UnknownVariable", - "UnsupportedMonitorType", - "Rejected", - "OutOfRange", - "Duplicate" - ] - }, - "ComponentType": { - "javaType": "Component", - "type": "object", - "additionalProperties": true, - "properties": { - "evse": { - "$ref": "#/definitions/EVSEType" - }, - "name": { - "type": "string", - "maxLength": 50 - }, - "instance": { - "type": "string", - "maxLength": 50 - } - }, - "required": [ - "name" - ] - }, - "EVSEType": { - "javaType": "EVSE", - "type": "object", - "additionalProperties": true, - "properties": { - "id": { - "type": "integer" - }, - "connectorId": { - "type": "integer" - } - }, - "required": [ - "id" - ] - }, - "SetMonitoringResultType": { - "javaType": "SetMonitoringResult", - "type": "object", - "additionalProperties": true, - "properties": { - "id": { - "type": "integer" - }, - "type": { - "$ref": "#/definitions/MonitorEnumType" - }, - "severity": { - "type": "integer" - }, - "status": { - "$ref": "#/definitions/SetMonitoringStatusEnumType" - }, - "component": { - "$ref": "#/definitions/ComponentType" - }, - "variable": { - "$ref": "#/definitions/VariableType" - } - }, - "required": [ - "type", - "severity", - "status", - "component", - "variable" - ] - }, - "VariableType": { - "javaType": "Variable", - "type": "object", - "additionalProperties": true, - "properties": { - "name": { - "type": "string", - "maxLength": 50 - }, - "instance": { - "type": "string", - "maxLength": 50 - } - }, - "required": [ - "name" - ] - } - }, - "type": "object", - "additionalProperties": true, - "properties": { - "setMonitoringResult": { - "type": "array", - "additionalItems": false, - "items": { - "$ref": "#/definitions/SetMonitoringResultType" - }, - "minItems": 1 - } - }, - "required": [ - "setMonitoringResult" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/SetVariablesRequest_v1p0.json b/ocpp/v20/schemas/SetVariablesRequest_v1p0.json deleted file mode 100644 index 32424c9cb..000000000 --- a/ocpp/v20/schemas/SetVariablesRequest_v1p0.json +++ /dev/null @@ -1,112 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "definitions": { - "AttributeEnumType": { - "type": "string", - "default": "Actual", - "additionalProperties": true, - "enum": [ - "Actual", - "Target", - "MinSet", - "MaxSet" - ] - }, - "ComponentType": { - "javaType": "Component", - "type": "object", - "additionalProperties": true, - "properties": { - "evse": { - "$ref": "#/definitions/EVSEType" - }, - "name": { - "type": "string", - "maxLength": 50 - }, - "instance": { - "type": "string", - "maxLength": 50 - } - }, - "required": [ - "name" - ] - }, - "EVSEType": { - "javaType": "EVSE", - "type": "object", - "additionalProperties": true, - "properties": { - "id": { - "type": "integer" - }, - "connectorId": { - "type": "integer" - } - }, - "required": [ - "id" - ] - }, - "SetVariableDataType": { - "javaType": "SetVariableData", - "type": "object", - "additionalProperties": true, - "properties": { - "attributeType": { - "$ref": "#/definitions/AttributeEnumType" - }, - "attributeValue": { - "type": "string", - "maxLength": 1000 - }, - "component": { - "$ref": "#/definitions/ComponentType" - }, - "variable": { - "$ref": "#/definitions/VariableType" - } - }, - "required": [ - "attributeValue", - "component", - "variable" - ] - }, - "VariableType": { - "javaType": "Variable", - "type": "object", - "additionalProperties": true, - "properties": { - "name": { - "type": "string", - "maxLength": 50 - }, - "instance": { - "type": "string", - "maxLength": 50 - } - }, - "required": [ - "name" - ] - } - }, - "type": "object", - "additionalProperties": true, - "properties": { - "setVariableData": { - "type": "array", - "additionalItems": false, - "items": { - "$ref": "#/definitions/SetVariableDataType" - }, - "minItems": 1 - } - }, - "required": [ - "setVariableData" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/SetVariablesResponse_v1p0.json b/ocpp/v20/schemas/SetVariablesResponse_v1p0.json deleted file mode 100644 index 4ae7f683a..000000000 --- a/ocpp/v20/schemas/SetVariablesResponse_v1p0.json +++ /dev/null @@ -1,125 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "definitions": { - "AttributeEnumType": { - "type": "string", - "default": "Actual", - "additionalProperties": true, - "enum": [ - "Actual", - "Target", - "MinSet", - "MaxSet" - ] - }, - "SetVariableStatusEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Accepted", - "Rejected", - "InvalidValue", - "UnknownComponent", - "UnknownVariable", - "NotSupportedAttributeType", - "OutOfRange", - "RebootRequired" - ] - }, - "ComponentType": { - "javaType": "Component", - "type": "object", - "additionalProperties": true, - "properties": { - "evse": { - "$ref": "#/definitions/EVSEType" - }, - "name": { - "type": "string", - "maxLength": 50 - }, - "instance": { - "type": "string", - "maxLength": 50 - } - }, - "required": [ - "name" - ] - }, - "EVSEType": { - "javaType": "EVSE", - "type": "object", - "additionalProperties": true, - "properties": { - "id": { - "type": "integer" - }, - "connectorId": { - "type": "integer" - } - }, - "required": [ - "id" - ] - }, - "SetVariableResultType": { - "javaType": "SetVariableResult", - "type": "object", - "additionalProperties": true, - "properties": { - "attributeType": { - "$ref": "#/definitions/AttributeEnumType" - }, - "attributeStatus": { - "$ref": "#/definitions/SetVariableStatusEnumType" - }, - "component": { - "$ref": "#/definitions/ComponentType" - }, - "variable": { - "$ref": "#/definitions/VariableType" - } - }, - "required": [ - "attributeStatus", - "component", - "variable" - ] - }, - "VariableType": { - "javaType": "Variable", - "type": "object", - "additionalProperties": true, - "properties": { - "name": { - "type": "string", - "maxLength": 50 - }, - "instance": { - "type": "string", - "maxLength": 50 - } - }, - "required": [ - "name" - ] - } - }, - "type": "object", - "additionalProperties": true, - "properties": { - "setVariableResult": { - "type": "array", - "additionalItems": false, - "items": { - "$ref": "#/definitions/SetVariableResultType" - }, - "minItems": 1 - } - }, - "required": [ - "setVariableResult" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/SignCertificateRequest_v1p0.json b/ocpp/v20/schemas/SignCertificateRequest_v1p0.json deleted file mode 100644 index e3b212769..000000000 --- a/ocpp/v20/schemas/SignCertificateRequest_v1p0.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "csr": { - "type": "string", - "maxLength": 800 - }, - "typeOfCertificate": { - "type": "string", - "additionalProperties": true, - "enum": [ - "ChargingStationCertificate", - "V2GCertificate" - ] - } - }, - "required": [ - "csr" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/SignCertificateResponse_v1p0.json b/ocpp/v20/schemas/SignCertificateResponse_v1p0.json deleted file mode 100644 index 5cd67bdf0..000000000 --- a/ocpp/v20/schemas/SignCertificateResponse_v1p0.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "status": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Accepted", - "Rejected" - ] - } - }, - "required": [ - "status" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/StatusNotificationRequest_v1p0.json b/ocpp/v20/schemas/StatusNotificationRequest_v1p0.json deleted file mode 100644 index 2759d6fa2..000000000 --- a/ocpp/v20/schemas/StatusNotificationRequest_v1p0.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "timestamp": { - "type": "string", - "format": "date-time" - }, - "connectorStatus": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Available", - "Occupied", - "Reserved", - "Unavailable", - "Faulted" - ] - }, - "evseId": { - "type": "integer" - }, - "connectorId": { - "type": "integer" - } - }, - "required": [ - "timestamp", - "connectorStatus", - "evseId", - "connectorId" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/StatusNotificationResponse_v1p0.json b/ocpp/v20/schemas/StatusNotificationResponse_v1p0.json deleted file mode 100644 index 49b69e9fd..000000000 --- a/ocpp/v20/schemas/StatusNotificationResponse_v1p0.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true -} \ No newline at end of file diff --git a/ocpp/v20/schemas/TransactionEventRequest_v1p0.json b/ocpp/v20/schemas/TransactionEventRequest_v1p0.json deleted file mode 100644 index 66b30a018..000000000 --- a/ocpp/v20/schemas/TransactionEventRequest_v1p0.json +++ /dev/null @@ -1,414 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "definitions": { - "ChargingStateEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Charging", - "EVDetected", - "SuspendedEV", - "SuspendedEVSE" - ] - }, - "EncodingMethodEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Other", - "DLMS Message", - "COSEM Protected Data", - "EDL" - ] - }, - "IdTokenEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Central", - "eMAID", - "ISO14443", - "KeyCode", - "Local", - "NoAuthorization", - "ISO15693" - ] - }, - "LocationEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Body", - "Cable", - "EV", - "Inlet", - "Outlet" - ] - }, - "MeasurandEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Current.Export", - "Current.Import", - "Current.Offered", - "Energy.Active.Export.Register", - "Energy.Active.Import.Register", - "Energy.Reactive.Export.Register", - "Energy.Reactive.Import.Register", - "Energy.Active.Export.Interval", - "Energy.Active.Import.Interval", - "Energy.Active.Net", - "Energy.Reactive.Export.Interval", - "Energy.Reactive.Import.Interval", - "Energy.Reactive.Net", - "Energy.Apparent.Net", - "Energy.Apparent.Import", - "Energy.Apparent.Export", - "Frequency", - "Power.Active.Export", - "Power.Active.Import", - "Power.Factor", - "Power.Offered", - "Power.Reactive.Export", - "Power.Reactive.Import", - "SoC", - "Voltage" - ] - }, - "PhaseEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "L1", - "L2", - "L3", - "N", - "L1-N", - "L2-N", - "L3-N", - "L1-L2", - "L2-L3", - "L3-L1" - ] - }, - "ReadingContextEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Interruption.Begin", - "Interruption.End", - "Other", - "Sample.Clock", - "Sample.Periodic", - "Transaction.Begin", - "Transaction.End", - "Trigger" - ] - }, - "ReasonEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "DeAuthorized", - "EmergencyStop", - "EnergyLimitReached", - "EVDisconnected", - "GroundFault", - "ImmediateReset", - "Local", - "LocalOutOfCredit", - "MasterPass", - "Other", - "OvercurrentFault", - "PowerLoss", - "PowerQuality", - "Reboot", - "Remote", - "SOCLimitReached", - "StoppedByEV", - "TimeLimitReached", - "Timeout", - "UnlockCommand" - ] - }, - "SignatureMethodEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "ECDSAP256SHA256", - "ECDSAP384SHA384", - "ECDSA192SHA256" - ] - }, - "TransactionEventEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Ended", - "Started", - "Updated" - ] - }, - "TriggerReasonEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Authorized", - "CablePluggedIn", - "ChargingRateChanged", - "ChargingStateChanged", - "Deauthorized", - "EnergyLimitReached", - "EVCommunicationLost", - "EVConnectTimeout", - "MeterValueClock", - "MeterValuePeriodic", - "TimeLimitReached", - "Trigger", - "UnlockCommand", - "StopAuthorized", - "EVDeparted", - "EVDetected", - "RemoteStop", - "RemoteStart" - ] - }, - "AdditionalInfoType": { - "javaType": "AdditionalInfo", - "type": "object", - "additionalProperties": true, - "properties": { - "additionalIdToken": { - "type": "string", - "maxLength": 36 - }, - "type": { - "type": "string", - "maxLength": 50 - } - }, - "required": [ - "additionalIdToken", - "type" - ] - }, - "EVSEType": { - "javaType": "EVSE", - "type": "object", - "additionalProperties": true, - "properties": { - "id": { - "type": "integer" - }, - "connectorId": { - "type": "integer" - } - }, - "required": [ - "id" - ] - }, - "IdTokenType": { - "javaType": "IdToken", - "type": "object", - "additionalProperties": true, - "properties": { - "additionalInfo": { - "type": "array", - "additionalItems": false, - "items": { - "$ref": "#/definitions/AdditionalInfoType" - }, - "minItems": 1 - }, - "idToken": { - "type": "string", - "maxLength": 36 - }, - "type": { - "$ref": "#/definitions/IdTokenEnumType" - } - }, - "required": [ - "idToken", - "type" - ] - }, - "MeterValueType": { - "javaType": "MeterValue", - "type": "object", - "additionalProperties": true, - "properties": { - "sampledValue": { - "type": "array", - "additionalItems": false, - "items": { - "$ref": "#/definitions/SampledValueType" - }, - "minItems": 1 - }, - "timestamp": { - "type": "string", - "format": "date-time" - } - }, - "required": [ - "timestamp", - "sampledValue" - ] - }, - "SampledValueType": { - "javaType": "SampledValue", - "type": "object", - "additionalProperties": true, - "properties": { - "value": { - "type": "number" - }, - "context": { - "$ref": "#/definitions/ReadingContextEnumType" - }, - "measurand": { - "$ref": "#/definitions/MeasurandEnumType" - }, - "phase": { - "$ref": "#/definitions/PhaseEnumType" - }, - "location": { - "$ref": "#/definitions/LocationEnumType" - }, - "signedMeterValue": { - "$ref": "#/definitions/SignedMeterValueType" - }, - "unitOfMeasure": { - "$ref": "#/definitions/UnitOfMeasureType" - } - }, - "required": [ - "value" - ] - }, - "SignedMeterValueType": { - "javaType": "SignedMeterValue", - "type": "object", - "additionalProperties": true, - "properties": { - "meterValueSignature": { - "type": "string", - "maxLength": 2500 - }, - "signatureMethod": { - "$ref": "#/definitions/SignatureMethodEnumType" - }, - "encodingMethod": { - "$ref": "#/definitions/EncodingMethodEnumType" - }, - "encodedMeterValue": { - "type": "string", - "maxLength": 512 - } - }, - "required": [ - "meterValueSignature", - "signatureMethod", - "encodingMethod", - "encodedMeterValue" - ] - }, - "TransactionType": { - "javaType": "Transaction", - "type": "object", - "additionalProperties": true, - "properties": { - "id": { - "type": "string", - "maxLength": 36 - }, - "chargingState": { - "$ref": "#/definitions/ChargingStateEnumType" - }, - "timeSpentCharging": { - "type": "integer" - }, - "stoppedReason": { - "$ref": "#/definitions/ReasonEnumType" - }, - "remoteStartId": { - "type": "integer" - } - }, - "required": [ - "id" - ] - }, - "UnitOfMeasureType": { - "javaType": "UnitOfMeasure", - "type": "object", - "additionalProperties": true, - "properties": { - "unit": { - "type": "string", - "maxLength": 20 - }, - "multiplier": { - "type": "integer" - } - } - } - }, - "type": "object", - "additionalProperties": true, - "properties": { - "eventType": { - "$ref": "#/definitions/TransactionEventEnumType" - }, - "meterValue": { - "type": "array", - "additionalItems": false, - "items": { - "$ref": "#/definitions/MeterValueType" - }, - "minItems": 1 - }, - "timestamp": { - "type": "string", - "format": "date-time" - }, - "triggerReason": { - "$ref": "#/definitions/TriggerReasonEnumType" - }, - "seqNo": { - "type": "integer" - }, - "offline": { - "type": "boolean" - }, - "numberOfPhasesUsed": { - "type": "integer" - }, - "cableMaxCurrent": { - "type": "number" - }, - "reservationId": { - "type": "integer" - }, - "transactionData": { - "$ref": "#/definitions/TransactionType" - }, - "evse": { - "$ref": "#/definitions/EVSEType" - }, - "idToken": { - "$ref": "#/definitions/IdTokenType" - } - }, - "required": [ - "eventType", - "timestamp", - "triggerReason", - "seqNo", - "transactionData" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/TransactionEventResponse_v1p0.json b/ocpp/v20/schemas/TransactionEventResponse_v1p0.json deleted file mode 100644 index c89e9ef4b..000000000 --- a/ocpp/v20/schemas/TransactionEventResponse_v1p0.json +++ /dev/null @@ -1,135 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "definitions": { - "AuthorizationStatusEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Accepted", - "Blocked", - "ConcurrentTx", - "Expired", - "Invalid", - "NoCredit", - "NotAllowedTypeEVSE", - "NotAtThisLocation", - "NotAtThisTime", - "Unknown" - ] - }, - "IdTokenEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Central", - "eMAID", - "ISO14443", - "KeyCode", - "Local", - "NoAuthorization", - "ISO15693" - ] - }, - "MessageFormatEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "ASCII", - "HTML", - "URI", - "UTF8" - ] - }, - "GroupIdTokenType": { - "javaType": "GroupIdToken", - "type": "object", - "additionalProperties": true, - "properties": { - "idToken": { - "type": "string", - "maxLength": 36 - }, - "type": { - "$ref": "#/definitions/IdTokenEnumType" - } - }, - "required": [ - "idToken", - "type" - ] - }, - "IdTokenInfoType": { - "javaType": "IdTokenInfo", - "type": "object", - "additionalProperties": true, - "properties": { - "status": { - "$ref": "#/definitions/AuthorizationStatusEnumType" - }, - "cacheExpiryDateTime": { - "type": "string", - "format": "date-time" - }, - "chargingPriority": { - "type": "integer" - }, - "groupIdToken": { - "$ref": "#/definitions/GroupIdTokenType" - }, - "language1": { - "type": "string", - "maxLength": 8 - }, - "language2": { - "type": "string", - "maxLength": 8 - }, - "personalMessage": { - "$ref": "#/definitions/MessageContentType" - } - }, - "required": [ - "status" - ] - }, - "MessageContentType": { - "javaType": "MessageContent", - "type": "object", - "additionalProperties": true, - "properties": { - "format": { - "$ref": "#/definitions/MessageFormatEnumType" - }, - "language": { - "type": "string", - "maxLength": 8 - }, - "content": { - "type": "string", - "maxLength": 512 - } - }, - "required": [ - "format", - "content" - ] - } - }, - "type": "object", - "additionalProperties": true, - "properties": { - "totalCost": { - "type": "number" - }, - "chargingPriority": { - "type": "integer" - }, - "idTokenInfo": { - "$ref": "#/definitions/IdTokenInfoType" - }, - "updatedPersonalMessage": { - "$ref": "#/definitions/MessageContentType" - } - } -} \ No newline at end of file diff --git a/ocpp/v20/schemas/TriggerMessageRequest_v1p0.json b/ocpp/v20/schemas/TriggerMessageRequest_v1p0.json deleted file mode 100644 index 8c6c96ff7..000000000 --- a/ocpp/v20/schemas/TriggerMessageRequest_v1p0.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "definitions": { - "MessageTriggerEnumType": { - "type": "string", - "additionalProperties": true, - "enum": [ - "BootNotification", - "LogStatusNotification", - "FirmwareStatusNotification", - "Heartbeat", - "MeterValues", - "SignChargingStationCertificate", - "SignV2GCertificate", - "StatusNotification", - "TransactionEvent" - ] - }, - "EVSEType": { - "javaType": "EVSE", - "type": "object", - "additionalProperties": true, - "properties": { - "id": { - "type": "integer" - }, - "connectorId": { - "type": "integer" - } - }, - "required": [ - "id" - ] - } - }, - "type": "object", - "additionalProperties": true, - "properties": { - "evse": { - "$ref": "#/definitions/EVSEType" - }, - "requestedMessage": { - "$ref": "#/definitions/MessageTriggerEnumType" - } - }, - "required": [ - "requestedMessage" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/TriggerMessageResponse_v1p0.json b/ocpp/v20/schemas/TriggerMessageResponse_v1p0.json deleted file mode 100644 index 9147d7c04..000000000 --- a/ocpp/v20/schemas/TriggerMessageResponse_v1p0.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "status": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Accepted", - "Rejected", - "NotImplemented" - ] - } - }, - "required": [ - "status" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/UnlockConnectorRequest_v1p0.json b/ocpp/v20/schemas/UnlockConnectorRequest_v1p0.json deleted file mode 100644 index 6f86c6db2..000000000 --- a/ocpp/v20/schemas/UnlockConnectorRequest_v1p0.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "evseId": { - "type": "integer" - }, - "connectorId": { - "type": "integer" - } - }, - "required": [ - "evseId", - "connectorId" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/UnlockConnectorResponse_v1p0.json b/ocpp/v20/schemas/UnlockConnectorResponse_v1p0.json deleted file mode 100644 index 4b06ee55c..000000000 --- a/ocpp/v20/schemas/UnlockConnectorResponse_v1p0.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "status": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Unlocked", - "UnlockFailed" - ] - } - }, - "required": [ - "status" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/UnpublishFirmwareRequest_v1p0.json b/ocpp/v20/schemas/UnpublishFirmwareRequest_v1p0.json deleted file mode 100644 index 4f3e8cc94..000000000 --- a/ocpp/v20/schemas/UnpublishFirmwareRequest_v1p0.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "checksum": { - "type": "string", - "maxLength": 32 - } - }, - "required": [ - "checksum" - ] -} diff --git a/ocpp/v20/schemas/UnpublishFirmwareResponse_v1p0.json b/ocpp/v20/schemas/UnpublishFirmwareResponse_v1p0.json deleted file mode 100644 index 2fa6589ac..000000000 --- a/ocpp/v20/schemas/UnpublishFirmwareResponse_v1p0.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "status": { - "type": "string", - "additionalProperties": true, - "enum": [ - "DownloadOngoing", - "NoFirmware", - "Unpublished" - ] - } - }, - "required": [ - "status" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/Update15118EVCertificateRequest_v1p0.json b/ocpp/v20/schemas/Update15118EVCertificateRequest_v1p0.json deleted file mode 100644 index 694c39fdf..000000000 --- a/ocpp/v20/schemas/Update15118EVCertificateRequest_v1p0.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "15118SchemaVersion": { - "type": "string", - "maxLength": 50 - }, - "exiRequest": { - "type": "string", - "maxLength": 5500 - } - }, - "required": [ - "15118SchemaVersion", - "exiRequest" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/Update15118EVCertificateResponse_v1p0.json b/ocpp/v20/schemas/Update15118EVCertificateResponse_v1p0.json deleted file mode 100644 index fa02e958d..000000000 --- a/ocpp/v20/schemas/Update15118EVCertificateResponse_v1p0.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "status": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Accepted", - "Failed" - ] - }, - "exiResponse": { - "type": "string", - "maxLength": 5500 - } - }, - "required": [ - "status" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/UpdateFirmwareRequest_v1p0.json b/ocpp/v20/schemas/UpdateFirmwareRequest_v1p0.json deleted file mode 100644 index 67bc70084..000000000 --- a/ocpp/v20/schemas/UpdateFirmwareRequest_v1p0.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "definitions": { - "FirmwareType": { - "javaType": "Firmware", - "type": "object", - "additionalProperties": true, - "properties": { - "location": { - "type": "string", - "maxLength": 512 - }, - "retrieveDateTime": { - "type": "string", - "format": "date-time" - }, - "installDateTime": { - "type": "string", - "format": "date-time" - }, - "signingCertificate": { - "type": "string", - "maxLength": 800 - }, - "signature": { - "type": "string", - "maxLength": 800 - } - }, - "required": [ - "location", - "retrieveDateTime" - ] - } - }, - "type": "object", - "additionalProperties": true, - "properties": { - "retries": { - "type": "integer" - }, - "retryInterval": { - "type": "integer" - }, - "requestId": { - "type": "integer" - }, - "firmware": { - "$ref": "#/definitions/FirmwareType" - } - }, - "required": [ - "requestId", - "firmware" - ] -} \ No newline at end of file diff --git a/ocpp/v20/schemas/UpdateFirmwareResponse_v1p0.json b/ocpp/v20/schemas/UpdateFirmwareResponse_v1p0.json deleted file mode 100644 index 058700949..000000000 --- a/ocpp/v20/schemas/UpdateFirmwareResponse_v1p0.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "comment": "OCPP 2.0 - v1p0", - "type": "object", - "additionalProperties": true, - "properties": { - "status": { - "type": "string", - "additionalProperties": true, - "enum": [ - "Accepted", - "Rejected", - "AcceptedCanceled" - ] - } - }, - "required": [ - "status" - ] -} \ No newline at end of file diff --git a/tests/v20/conftest.py b/tests/v20/conftest.py deleted file mode 100644 index 927faef17..000000000 --- a/tests/v20/conftest.py +++ /dev/null @@ -1,75 +0,0 @@ -try: - from unittest.mock import AsyncMock -except ImportError: - # Python 3.7 and below don't include unittest.mock.AsyncMock. Hence, - # we need to resolve to a package on pypi. - from asynctest import CoroutineMock as AsyncMock - -import pytest - -from ocpp.messages import Call, CallResult -from ocpp.v20 import ChargePoint, call - -chargingStation = { - "vendorName": "ICU Eve Mini", - "firmwareVersion": "#1:3.4.0-2990#N:217H;1.0-223", - "model": "ICU Eve Mini", -} - - -@pytest.fixture -def heartbeat_call(): - return Call(unique_id=1, action="Heartbeat", payload={}).to_json() - - -@pytest.fixture -def boot_notification_call(): - return Call( - unique_id="1", - action="BootNotification", - payload={ - "reason": "PowerUp", - "chargingStation": chargingStation, - }, - ).to_json() - - -@pytest.fixture -def base_central_system(connection): - cs = ChargePoint( - id=1234, - connection=connection, - ) - - cs._unique_id_generator = lambda: 1337 - - return cs - - -@pytest.fixture -def mock_boot_request(): - return call.BootNotificationPayload( - reason="PowerUp", - charging_station=chargingStation, - ) - - -@pytest.fixture -def mock_base_central_system(base_central_system): - mock_result_call = CallResult( - unique_id=str(base_central_system._unique_id_generator()), - action="BootNotification", - payload={ - "currentTime": "2018-05-29T17:37:05.495259", - "interval": 350, - "status": "Accepted", - }, - ) - - base_central_system._send = AsyncMock() - - mock_response = AsyncMock() - mock_response.return_value = mock_result_call - base_central_system._get_specific_response = mock_response - - return base_central_system diff --git a/tests/v20/test_v20_charge_point.py b/tests/v20/test_v20_charge_point.py deleted file mode 100644 index bb0a04aa2..000000000 --- a/tests/v20/test_v20_charge_point.py +++ /dev/null @@ -1,120 +0,0 @@ -import json - -import pytest - -from ocpp.routing import after, create_route_map, on -from ocpp.v20 import call_result - - -@pytest.mark.asyncio -async def test_route_message_with_existing_route( - base_central_system, boot_notification_call -): - """Test if the correct handler is called when routing a message. - Also test if payload of request is injected correctly in handler. - - """ - - @on("BootNotification") - def on_boot_notification(reason, charging_station, **kwargs): - assert reason == "PowerUp" - assert charging_station == { - "vendor_name": "ICU Eve Mini", - "firmware_version": "#1:3.4.0-2990#N:217H;1.0-223", - "model": "ICU Eve Mini", - } - - return call_result.BootNotificationPayload( - current_time="2018-05-29T17:37:05.495259", - interval=350, - status="Accepted", - ) - - @after("BootNotification") - def after_boot_notification(reason, charging_station, **kwargs): - assert reason == "PowerUp" - assert charging_station == { - "vendor_name": "ICU Eve Mini", - "firmware_version": "#1:3.4.0-2990#N:217H;1.0-223", - "model": "ICU Eve Mini", - } - - setattr(base_central_system, "on_boot_notification", on_boot_notification) - setattr(base_central_system, "after_boot_notification", after_boot_notification) - base_central_system.route_map = create_route_map(base_central_system) - - await base_central_system.route_message(boot_notification_call) - base_central_system._connection.send.assert_called_once_with( - json.dumps( - [ - 3, - "1", - { - "currentTime": "2018-05-29T17:37:05.495259", - "interval": 350, - "status": "Accepted", - }, - ], - separators=(",", ":"), - ) - ) - - -@pytest.mark.asyncio -async def test_route_message_with_no_route(base_central_system, heartbeat_call): - """ - Test that a CALLERROR is sent back, reporting that no handler is - registred for it. - - """ - # Empty the route map - base_central_system.route_map = {} - - await base_central_system.route_message(heartbeat_call) - base_central_system._connection.send.assert_called_once_with( - json.dumps( - [ - 4, - 1, - "NotImplemented", - "Request Action is recognized but not supported by the receiver", - {"cause": "No handler for Heartbeat registered."}, - ], - separators=(",", ":"), - ) - ) - - -@pytest.mark.asyncio -async def test_call_with_unique_id_should_return_same_id( - mock_boot_request, mock_base_central_system -): - - expected_unique_id = "12345" - # Call the method being tested with a unique_id as a parameter - await mock_base_central_system.call(mock_boot_request, unique_id=expected_unique_id) - ( - actual_unique_id, - _, - ) = mock_base_central_system._get_specific_response.call_args_list[0][0] - - # Check the actual unique id is equals to the one passed to the call method - assert actual_unique_id == expected_unique_id - - -@pytest.mark.asyncio -async def test_call_without_unique_id_should_return_a_random_value( - mock_boot_request, mock_base_central_system -): - - expected_unique_id = str(mock_base_central_system._unique_id_generator()) - - # Call the method being tested without passing a unique_id as a parameter - await mock_base_central_system.call(mock_boot_request) - - ( - actual_unique_id, - _, - ) = mock_base_central_system._get_specific_response.call_args_list[0][0] - # Check the actual unique id is equals to the one internally generated - assert actual_unique_id == expected_unique_id From e2680fd50268bf073d2c2e26cbf5b45d727d68e7 Mon Sep 17 00:00:00 2001 From: Jared Newell Date: Wed, 17 Jan 2024 15:37:45 +0100 Subject: [PATCH 2/4] changelog and readme updated --- README.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.rst b/README.rst index 673ee62bf..4b32be07d 100644 --- a/README.rst +++ b/README.rst @@ -134,7 +134,7 @@ code in the `Central System documentation`_. if __name__ == '__main__': asyncio.run(main()) -Charging station / Charge point +Charging Station / Charge point ~~~~~~~~~~~~ .. code-block:: python From c5e92b1f42b54c8ba013cc8c823263f0ba2b80f5 Mon Sep 17 00:00:00 2001 From: Jared Newell Date: Wed, 17 Jan 2024 15:47:09 +0100 Subject: [PATCH 3/4] updated from 2.0 to 2.0.1 for tests --- tests/test_charge_point.py | 8 ++++---- tests/test_messages.py | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/test_charge_point.py b/tests/test_charge_point.py index 897fabc2b..eff9acde6 100644 --- a/tests/test_charge_point.py +++ b/tests/test_charge_point.py @@ -16,14 +16,14 @@ ) from ocpp.v16.datatypes import MeterValue, SampledValue from ocpp.v16.enums import Action, RegistrationStatus -from ocpp.v20 import ChargePoint as cp_20 +from ocpp.v201 import ChargePoint as cp_201 from ocpp.v201.call import SetNetworkProfilePayload from ocpp.v201.datatypes import NetworkConnectionProfileType from ocpp.v201.enums import OCPPInterfaceType, OCPPTransportType, OCPPVersionType def test_getters_should_not_be_called_during_routemap_setup(): - class ChargePoint(cp_20): + class ChargePoint(cp_201): @property def foo(self): raise RuntimeError("this will be raised") @@ -36,12 +36,12 @@ def foo(self): def test_multiple_classes_with_same_name_for_handler(): - class ChargerA(cp_20): + class ChargerA(cp_201): @on(Action.Heartbeat) def heartbeat(self, **kwargs): pass - class ChargerB(cp_20): + class ChargerB(cp_201): @on(Action.Heartbeat) def heartbeat(self, **kwargs): pass diff --git a/tests/test_messages.py b/tests/test_messages.py index 60c798b0a..3bd7131e7 100644 --- a/tests/test_messages.py +++ b/tests/test_messages.py @@ -150,7 +150,7 @@ def test_validate_get_composite_profile_payload(): validate_payload(message, ocpp_version="1.6") -@pytest.mark.parametrize("ocpp_version", ["1.6", "2.0"]) +@pytest.mark.parametrize("ocpp_version", ["1.6", "2.0.1"]) def test_validate_payload_with_valid_payload(ocpp_version): """ Test if validate_payload doesn't return any exceptions when it's From efd282b24e5531221960b78f851f462996eb5e94 Mon Sep 17 00:00:00 2001 From: Jared Newell Date: Wed, 24 Jan 2024 15:24:58 +0100 Subject: [PATCH 4/4] change log updated --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a2d93d00c..276f994d5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ # Change log -- [#498](https://github.com/mobilityhouse/ocpp/issues/498) Remove support for OCPP 2.0 +## BREAKING ## +- [#498](https://github.com/mobilityhouse/ocpp/issues/498) Remove support for OCPP 2.0 - IMPORTANT SEE UPGRADE PATH [#498](https://github.com/mobilityhouse/ocpp/issues/498) ## 0.26.0 (2024-01-17)