├── .flake8 ├── .github ├── CODEOWNERS ├── ISSUE_TEMPLATE │ ├── documentation_request.md │ ├── feature_request.md │ └── question.md ├── actions │ └── setup-python-build-env │ │ └── action.yml ├── pull_request_template.md └── workflows │ ├── inactive-issue.yml │ ├── publish-to-pypi.yml │ └── pull-request.yml ├── .gitignore ├── .readthedocs.yaml ├── CHANGELOG.md ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── MANIFEST.in ├── Makefile ├── README.rst ├── SECURITY.md ├── SUPPORT.md ├── docs ├── requirements.txt ├── source │ ├── conf.py │ ├── debugging.rst │ ├── index.rst │ ├── installation.rst │ └── usage │ │ ├── client_side.rst │ │ ├── index.rst │ │ └── server_side.rst ├── v16 │ ├── ocpp-1.6 edition 2.pdf │ ├── ocpp-1.6-errata-sheet.pdf │ ├── ocpp-1.6-security-whitepaper-edition-2.pdf │ ├── ocpp-1.6.pdf │ ├── ocpp-j-1.6-errata-sheet.pdf │ └── ocpp-j-1.6-specification.pdf ├── v201 │ ├── OCPP-2.0.1_edition2_errata_2023-12.pdf │ ├── OCPP-2.0.1_part0_introduction.pdf │ ├── OCPP-2.0.1_part1_architecture_topology.pdf │ ├── OCPP-2.0.1_part2_appendices_v13.pdf │ ├── OCPP-2.0.1_part2_errata_v20.pdf │ ├── OCPP-2.0.1_part2_specification_edition2.pdf │ ├── OCPP-2.0.1_part4_ocpp-j-specification.pdf │ ├── OCPP-2.0.1_part5_certification_profiles.pdf │ └── OCPP-2.0.1_part6_test_cases.pdf └── v21 │ ├── OCPP-2.1_edition1_part0_introduction.pdf │ ├── OCPP-2.1_edition1_part1_architecture_topology.pdf │ ├── OCPP-2.1_edition1_part2_specification.pdf │ ├── OCPP-2.1_edition1_part4_ocpp-j-specification.pdf │ └── OCPP-2.1_part2_appendices_v20.pdf ├── examples ├── v16 │ ├── central_system.py │ └── charge_point.py ├── v201 │ ├── central_system.py │ └── charge_point.py └── v21 │ ├── central_system.py │ └── charge_point.py ├── ocpp ├── __init__.py ├── charge_point.py ├── exceptions.py ├── experimental │ └── v21 │ │ └── README.rst ├── messages.py ├── routing.py ├── v16 │ ├── __init__.py │ ├── call.py │ ├── call_result.py │ ├── datatypes.py │ ├── enums.py │ └── schemas │ │ ├── Authorize.json │ │ ├── AuthorizeResponse.json │ │ ├── BootNotification.json │ │ ├── BootNotificationResponse.json │ │ ├── CancelReservation.json │ │ ├── CancelReservationResponse.json │ │ ├── CertificateSigned.json │ │ ├── CertificateSignedResponse.json │ │ ├── ChangeAvailability.json │ │ ├── ChangeAvailabilityResponse.json │ │ ├── ChangeConfiguration.json │ │ ├── ChangeConfigurationResponse.json │ │ ├── ClearCache.json │ │ ├── ClearCacheResponse.json │ │ ├── ClearChargingProfile.json │ │ ├── ClearChargingProfileResponse.json │ │ ├── DataTransfer.json │ │ ├── DataTransferResponse.json │ │ ├── DeleteCertificate.json │ │ ├── DeleteCertificateResponse.json │ │ ├── DiagnosticsStatusNotification.json │ │ ├── DiagnosticsStatusNotificationResponse.json │ │ ├── ExtendedTriggerMessage.json │ │ ├── ExtendedTriggerMessageResponse.json │ │ ├── FirmwareStatusNotification.json │ │ ├── FirmwareStatusNotificationResponse.json │ │ ├── GetCompositeSchedule.json │ │ ├── GetCompositeScheduleResponse.json │ │ ├── GetConfiguration.json │ │ ├── GetConfigurationResponse.json │ │ ├── GetDiagnostics.json │ │ ├── GetDiagnosticsResponse.json │ │ ├── GetInstalledCertificateIds.json │ │ ├── GetInstalledCertificateIdsResponse.json │ │ ├── GetLocalListVersion.json │ │ ├── GetLocalListVersionResponse.json │ │ ├── GetLog.json │ │ ├── GetLogResponse.json │ │ ├── Heartbeat.json │ │ ├── HeartbeatResponse.json │ │ ├── InstallCertificate.json │ │ ├── InstallCertificateResponse.json │ │ ├── LogStatusNotification.json │ │ ├── LogStatusNotificationResponse.json │ │ ├── MeterValues.json │ │ ├── MeterValuesResponse.json │ │ ├── RemoteStartTransaction.json │ │ ├── RemoteStartTransactionResponse.json │ │ ├── RemoteStopTransaction.json │ │ ├── RemoteStopTransactionResponse.json │ │ ├── ReserveNow.json │ │ ├── ReserveNowResponse.json │ │ ├── Reset.json │ │ ├── ResetResponse.json │ │ ├── SecurityEventNotification.json │ │ ├── SecurityEventNotificationResponse.json │ │ ├── SendLocalList.json │ │ ├── SendLocalListResponse.json │ │ ├── SetChargingProfile.json │ │ ├── SetChargingProfileResponse.json │ │ ├── SignCertificate.json │ │ ├── SignCertificateResponse.json │ │ ├── SignedFirmwareStatusNotification.json │ │ ├── SignedFirmwareStatusNotificationResponse.json │ │ ├── SignedUpdateFirmware.json │ │ ├── SignedUpdateFirmwareResponse.json │ │ ├── StartTransaction.json │ │ ├── StartTransactionResponse.json │ │ ├── StatusNotification.json │ │ ├── StatusNotificationResponse.json │ │ ├── StopTransaction.json │ │ ├── StopTransactionResponse.json │ │ ├── TriggerMessage.json │ │ ├── TriggerMessageResponse.json │ │ ├── UnlockConnector.json │ │ ├── UnlockConnectorResponse.json │ │ ├── UpdateFirmware.json │ │ └── UpdateFirmwareResponse.json ├── v201 │ ├── __init__.py │ ├── call.py │ ├── call_result.py │ ├── datatypes.py │ ├── enums.py │ └── schemas │ │ ├── AuthorizeRequest.json │ │ ├── AuthorizeResponse.json │ │ ├── BootNotificationRequest.json │ │ ├── BootNotificationResponse.json │ │ ├── CancelReservationRequest.json │ │ ├── CancelReservationResponse.json │ │ ├── CertificateSignedRequest.json │ │ ├── CertificateSignedResponse.json │ │ ├── ChangeAvailabilityRequest.json │ │ ├── ChangeAvailabilityResponse.json │ │ ├── ClearCacheRequest.json │ │ ├── ClearCacheResponse.json │ │ ├── ClearChargingProfileRequest.json │ │ ├── ClearChargingProfileResponse.json │ │ ├── ClearDisplayMessageRequest.json │ │ ├── ClearDisplayMessageResponse.json │ │ ├── ClearVariableMonitoringRequest.json │ │ ├── ClearVariableMonitoringResponse.json │ │ ├── ClearedChargingLimitRequest.json │ │ ├── ClearedChargingLimitResponse.json │ │ ├── CostUpdatedRequest.json │ │ ├── CostUpdatedResponse.json │ │ ├── CustomerInformationRequest.json │ │ ├── CustomerInformationResponse.json │ │ ├── DataTransferRequest.json │ │ ├── DataTransferResponse.json │ │ ├── DeleteCertificateRequest.json │ │ ├── DeleteCertificateResponse.json │ │ ├── FirmwareStatusNotificationRequest.json │ │ ├── FirmwareStatusNotificationResponse.json │ │ ├── Get15118EVCertificateRequest.json │ │ ├── Get15118EVCertificateResponse.json │ │ ├── GetBaseReportRequest.json │ │ ├── GetBaseReportResponse.json │ │ ├── GetCertificateStatusRequest.json │ │ ├── GetCertificateStatusResponse.json │ │ ├── GetChargingProfilesRequest.json │ │ ├── GetChargingProfilesResponse.json │ │ ├── GetCompositeScheduleRequest.json │ │ ├── GetCompositeScheduleResponse.json │ │ ├── GetDisplayMessagesRequest.json │ │ ├── GetDisplayMessagesResponse.json │ │ ├── GetInstalledCertificateIdsRequest.json │ │ ├── GetInstalledCertificateIdsResponse.json │ │ ├── GetLocalListVersionRequest.json │ │ ├── GetLocalListVersionResponse.json │ │ ├── GetLogRequest.json │ │ ├── GetLogResponse.json │ │ ├── GetMonitoringReportRequest.json │ │ ├── GetMonitoringReportResponse.json │ │ ├── GetReportRequest.json │ │ ├── GetReportResponse.json │ │ ├── GetTransactionStatusRequest.json │ │ ├── GetTransactionStatusResponse.json │ │ ├── GetVariablesRequest.json │ │ ├── GetVariablesResponse.json │ │ ├── HeartbeatRequest.json │ │ ├── HeartbeatResponse.json │ │ ├── InstallCertificateRequest.json │ │ ├── InstallCertificateResponse.json │ │ ├── LogStatusNotificationRequest.json │ │ ├── LogStatusNotificationResponse.json │ │ ├── MeterValuesRequest.json │ │ ├── MeterValuesResponse.json │ │ ├── NotifyChargingLimitRequest.json │ │ ├── NotifyChargingLimitResponse.json │ │ ├── NotifyCustomerInformationRequest.json │ │ ├── NotifyCustomerInformationResponse.json │ │ ├── NotifyDisplayMessagesRequest.json │ │ ├── NotifyDisplayMessagesResponse.json │ │ ├── NotifyEVChargingNeedsRequest.json │ │ ├── NotifyEVChargingNeedsResponse.json │ │ ├── NotifyEVChargingScheduleRequest.json │ │ ├── NotifyEVChargingScheduleResponse.json │ │ ├── NotifyEventRequest.json │ │ ├── NotifyEventResponse.json │ │ ├── NotifyMonitoringReportRequest.json │ │ ├── NotifyMonitoringReportResponse.json │ │ ├── NotifyReportRequest.json │ │ ├── NotifyReportResponse.json │ │ ├── PublishFirmwareRequest.json │ │ ├── PublishFirmwareResponse.json │ │ ├── PublishFirmwareStatusNotificationRequest.json │ │ ├── PublishFirmwareStatusNotificationResponse.json │ │ ├── ReportChargingProfilesRequest.json │ │ ├── ReportChargingProfilesResponse.json │ │ ├── RequestStartTransactionRequest.json │ │ ├── RequestStartTransactionResponse.json │ │ ├── RequestStopTransactionRequest.json │ │ ├── RequestStopTransactionResponse.json │ │ ├── ReservationStatusUpdateRequest.json │ │ ├── ReservationStatusUpdateResponse.json │ │ ├── ReserveNowRequest.json │ │ ├── ReserveNowResponse.json │ │ ├── ResetRequest.json │ │ ├── ResetResponse.json │ │ ├── SecurityEventNotificationRequest.json │ │ ├── SecurityEventNotificationResponse.json │ │ ├── SendLocalListRequest.json │ │ ├── SendLocalListResponse.json │ │ ├── SetChargingProfileRequest.json │ │ ├── SetChargingProfileResponse.json │ │ ├── SetDisplayMessageRequest.json │ │ ├── SetDisplayMessageResponse.json │ │ ├── SetMonitoringBaseRequest.json │ │ ├── SetMonitoringBaseResponse.json │ │ ├── SetMonitoringLevelRequest.json │ │ ├── SetMonitoringLevelResponse.json │ │ ├── SetNetworkProfileRequest.json │ │ ├── SetNetworkProfileResponse.json │ │ ├── SetVariableMonitoringRequest.json │ │ ├── SetVariableMonitoringResponse.json │ │ ├── SetVariablesRequest.json │ │ ├── SetVariablesResponse.json │ │ ├── SignCertificateRequest.json │ │ ├── SignCertificateResponse.json │ │ ├── StatusNotificationRequest.json │ │ ├── StatusNotificationResponse.json │ │ ├── TransactionEventRequest.json │ │ ├── TransactionEventResponse.json │ │ ├── TriggerMessageRequest.json │ │ ├── TriggerMessageResponse.json │ │ ├── UnlockConnectorRequest.json │ │ ├── UnlockConnectorResponse.json │ │ ├── UnpublishFirmwareRequest.json │ │ ├── UnpublishFirmwareResponse.json │ │ ├── UpdateFirmwareRequest.json │ │ └── UpdateFirmwareResponse.json └── v21 │ ├── __init__.py │ ├── call.py │ ├── call_result.py │ ├── datatypes.py │ ├── enums.py │ └── schemas │ ├── AFRRSignalRequest.json │ ├── AFRRSignalResponse.json │ ├── AdjustPeriodicEventStreamRequest.json │ ├── AdjustPeriodicEventStreamResponse.json │ ├── AuthorizeRequest.json │ ├── AuthorizeResponse.json │ ├── BatterySwapRequest.json │ ├── BatterySwapResponse.json │ ├── BootNotificationRequest.json │ ├── BootNotificationResponse.json │ ├── CancelReservationRequest.json │ ├── CancelReservationResponse.json │ ├── CertificateSignedRequest.json │ ├── CertificateSignedResponse.json │ ├── ChangeAvailabilityRequest.json │ ├── ChangeAvailabilityResponse.json │ ├── ChangeTransactionTariffRequest.json │ ├── ChangeTransactionTariffResponse.json │ ├── ClearCacheRequest.json │ ├── ClearCacheResponse.json │ ├── ClearChargingProfileRequest.json │ ├── ClearChargingProfileResponse.json │ ├── ClearDERControlRequest.json │ ├── ClearDERControlResponse.json │ ├── ClearDisplayMessageRequest.json │ ├── ClearDisplayMessageResponse.json │ ├── ClearTariffsRequest.json │ ├── ClearTariffsResponse.json │ ├── ClearVariableMonitoringRequest.json │ ├── ClearVariableMonitoringResponse.json │ ├── ClearedChargingLimitRequest.json │ ├── ClearedChargingLimitResponse.json │ ├── ClosePeriodicEventStreamRequest.json │ ├── ClosePeriodicEventStreamResponse.json │ ├── CostUpdatedRequest.json │ ├── CostUpdatedResponse.json │ ├── CustomerInformationRequest.json │ ├── CustomerInformationResponse.json │ ├── DataTransferRequest.json │ ├── DataTransferResponse.json │ ├── DeleteCertificateRequest.json │ ├── DeleteCertificateResponse.json │ ├── FirmwareStatusNotificationRequest.json │ ├── FirmwareStatusNotificationResponse.json │ ├── Get15118EVCertificateRequest.json │ ├── Get15118EVCertificateResponse.json │ ├── GetBaseReportRequest.json │ ├── GetBaseReportResponse.json │ ├── GetCertificateChainStatusRequest.json │ ├── GetCertificateChainStatusResponse.json │ ├── GetCertificateStatusRequest.json │ ├── GetCertificateStatusResponse.json │ ├── GetChargingProfilesRequest.json │ ├── GetChargingProfilesResponse.json │ ├── GetCompositeScheduleRequest.json │ ├── GetCompositeScheduleResponse.json │ ├── GetDERControlRequest.json │ ├── GetDERControlResponse.json │ ├── GetDisplayMessagesRequest.json │ ├── GetDisplayMessagesResponse.json │ ├── GetInstalledCertificateIdsRequest.json │ ├── GetInstalledCertificateIdsResponse.json │ ├── GetLocalListVersionRequest.json │ ├── GetLocalListVersionResponse.json │ ├── GetLogRequest.json │ ├── GetLogResponse.json │ ├── GetMonitoringReportRequest.json │ ├── GetMonitoringReportResponse.json │ ├── GetPeriodicEventStreamRequest.json │ ├── GetPeriodicEventStreamResponse.json │ ├── GetReportRequest.json │ ├── GetReportResponse.json │ ├── GetTariffsRequest.json │ ├── GetTariffsResponse.json │ ├── GetTransactionStatusRequest.json │ ├── GetTransactionStatusResponse.json │ ├── GetVariablesRequest.json │ ├── GetVariablesResponse.json │ ├── HeartbeatRequest.json │ ├── HeartbeatResponse.json │ ├── InstallCertificateRequest.json │ ├── InstallCertificateResponse.json │ ├── LogStatusNotificationRequest.json │ ├── LogStatusNotificationResponse.json │ ├── MeterValuesRequest.json │ ├── MeterValuesResponse.json │ ├── NotifyAllowedEnergyTransferRequest.json │ ├── NotifyAllowedEnergyTransferResponse.json │ ├── NotifyChargingLimitRequest.json │ ├── NotifyChargingLimitResponse.json │ ├── NotifyCustomerInformationRequest.json │ ├── NotifyCustomerInformationResponse.json │ ├── NotifyDERAlarmRequest.json │ ├── NotifyDERAlarmResponse.json │ ├── NotifyDERStartStopRequest.json │ ├── NotifyDERStartStopResponse.json │ ├── NotifyDisplayMessagesRequest.json │ ├── NotifyDisplayMessagesResponse.json │ ├── NotifyEVChargingNeedsRequest.json │ ├── NotifyEVChargingNeedsResponse.json │ ├── NotifyEVChargingScheduleRequest.json │ ├── NotifyEVChargingScheduleResponse.json │ ├── NotifyEventRequest.json │ ├── NotifyEventResponse.json │ ├── NotifyMonitoringReportRequest.json │ ├── NotifyMonitoringReportResponse.json │ ├── NotifyPeriodicEventStream.json │ ├── NotifyPriorityChargingRequest.json │ ├── NotifyPriorityChargingResponse.json │ ├── NotifyReportRequest.json │ ├── NotifyReportResponse.json │ ├── NotifySettlementRequest.json │ ├── NotifySettlementResponse.json │ ├── NotifyWebPaymentStartedRequest.json │ ├── NotifyWebPaymentStartedResponse.json │ ├── OpenPeriodicEventStreamRequest.json │ ├── OpenPeriodicEventStreamResponse.json │ ├── PublishFirmwareRequest.json │ ├── PublishFirmwareResponse.json │ ├── PublishFirmwareStatusNotificationRequest.json │ ├── PublishFirmwareStatusNotificationResponse.json │ ├── PullDynamicScheduleUpdateRequest.json │ ├── PullDynamicScheduleUpdateResponse.json │ ├── ReportChargingProfilesRequest.json │ ├── ReportChargingProfilesResponse.json │ ├── ReportDERControlRequest.json │ ├── ReportDERControlResponse.json │ ├── RequestBatterySwapRequest.json │ ├── RequestBatterySwapResponse.json │ ├── RequestStartTransactionRequest.json │ ├── RequestStartTransactionResponse.json │ ├── RequestStopTransactionRequest.json │ ├── RequestStopTransactionResponse.json │ ├── ReservationStatusUpdateRequest.json │ ├── ReservationStatusUpdateResponse.json │ ├── ReserveNowRequest.json │ ├── ReserveNowResponse.json │ ├── ResetRequest.json │ ├── ResetResponse.json │ ├── SecurityEventNotificationRequest.json │ ├── SecurityEventNotificationResponse.json │ ├── SendLocalListRequest.json │ ├── SendLocalListResponse.json │ ├── SetChargingProfileRequest.json │ ├── SetChargingProfileResponse.json │ ├── SetDERControlRequest.json │ ├── SetDERControlResponse.json │ ├── SetDefaultTariffRequest.json │ ├── SetDefaultTariffResponse.json │ ├── SetDisplayMessageRequest.json │ ├── SetDisplayMessageResponse.json │ ├── SetMonitoringBaseRequest.json │ ├── SetMonitoringBaseResponse.json │ ├── SetMonitoringLevelRequest.json │ ├── SetMonitoringLevelResponse.json │ ├── SetNetworkProfileRequest.json │ ├── SetNetworkProfileResponse.json │ ├── SetVariableMonitoringRequest.json │ ├── SetVariableMonitoringResponse.json │ ├── SetVariablesRequest.json │ ├── SetVariablesResponse.json │ ├── SignCertificateRequest.json │ ├── SignCertificateResponse.json │ ├── StatusNotificationRequest.json │ ├── StatusNotificationResponse.json │ ├── TransactionEventRequest.json │ ├── TransactionEventResponse.json │ ├── TriggerMessageRequest.json │ ├── TriggerMessageResponse.json │ ├── UnlockConnectorRequest.json │ ├── UnlockConnectorResponse.json │ ├── UnpublishFirmwareRequest.json │ ├── UnpublishFirmwareResponse.json │ ├── UpdateDynamicScheduleRequest.json │ ├── UpdateDynamicScheduleResponse.json │ ├── UpdateFirmwareRequest.json │ ├── UpdateFirmwareResponse.json │ ├── UsePriorityChargingRequest.json │ ├── UsePriorityChargingResponse.json │ ├── VatNumberValidationRequest.json │ └── VatNumberValidationResponse.json ├── poetry.lock ├── pyproject.toml ├── scripts ├── schema_to_dataclass.py ├── schema_to_enums_v201.py └── v21 │ ├── code_generator.py │ ├── generate_implementation.py │ └── json_schema_parser.py └── tests ├── __init__.py ├── conftest.py ├── experimental └── v21 │ └── README.rst ├── test_charge_point.py ├── test_exceptions.py ├── test_messages.py ├── test_routing.py ├── v16 ├── conftest.py ├── test_v16_charge_point.py ├── test_v16_charging_profiles.py └── test_v16_enums.py └── v201 ├── conftest.py ├── test_v201_charge_point.py ├── test_v201_data_types.py └── test_v201_enums.py /.flake8: -------------------------------------------------------------------------------- 1 | [flake8] 2 | max-line-length = 88 3 | inline-quotes = " 4 | -------------------------------------------------------------------------------- /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @mdwcrft @proelke 2 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/documentation_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Documentation request 3 | about: Suggest documentation for this project 4 | title: '' 5 | labels: documentation 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the documentation you'd like** 11 | A clear and concise description of what you'd want documented. 12 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: '' 5 | labels: enhancement 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Is your feature request related to a problem? Please describe.** 11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 12 | 13 | **Describe the solution you'd like** 14 | A clear and concise description of what you want to happen. 15 | 16 | **Describe alternatives you've considered** 17 | A clear and concise description of any alternative solutions or features you've considered. 18 | 19 | **Additional context** 20 | Add any other context or screenshots about the feature request here. 21 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/question.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug 3 | about: Describe this issue template's purpose here. 4 | title: '' 5 | labels: bug 6 | assignees: '' 7 | 8 | --- 9 | 10 | When your issue is related to code that isn't working as expected, please 11 | enable debug logs: 12 | 13 | ``` python 14 | import logging 15 | logging.basicConfig(level=logging.DEBUG) 16 | ``` 17 | 18 | More info can be found in the [Debugging 19 | section](https://github.com/mobilityhouse/ocpp#debugging) of the README. 20 | 21 | If these actions didn't help to find the cause of your issue, please provide 22 | code samples and logs with your question. 23 | -------------------------------------------------------------------------------- /.github/actions/setup-python-build-env/action.yml: -------------------------------------------------------------------------------- 1 | name: "Setup Build Environment" 2 | description: "Install everything needed to build" 3 | 4 | runs: 5 | using: "composite" 6 | steps: 7 | - name: Install poetry 8 | shell: bash 9 | run: | 10 | pipx install poetry 11 | -------------------------------------------------------------------------------- /.github/pull_request_template.md: -------------------------------------------------------------------------------- 1 | ### Changes included in this PR 2 | 3 | *(Bug fix, feature, docs update, ...)* 4 | 5 | ### Current behavior 6 | 7 | *Link to an open issue here...* 8 | 9 | ### New behavior 10 | 11 | *If this is a feature change, describe the new behavior* 12 | 13 | ### Impact 14 | 15 | *Describe breaking changes, including changes a users might need to make due to this PR* 16 | 17 | ### Checklist 18 | 19 | 1. [ ] Does your submission pass the existing tests? 20 | 2. [ ] Are there new tests that cover these additions/changes? 21 | 3. [ ] Have you linted your code locally before submission? 22 | -------------------------------------------------------------------------------- /.github/workflows/inactive-issue.yml: -------------------------------------------------------------------------------- 1 | name: Close inactive issues 2 | on: 3 | schedule: 4 | - cron: "0 0 * * *" 5 | 6 | jobs: 7 | close-issues: 8 | runs-on: ubuntu-latest 9 | permissions: 10 | issues: write 11 | pull-requests: write 12 | steps: 13 | - uses: actions/stale@v5 14 | with: 15 | days-before-issue-stale: 30 16 | days-before-issue-close: 14 17 | stale-issue-label: "stale" 18 | stale-issue-message: "This issue is stale because it has been open for 30 days with no activity." 19 | close-issue-message: "This issue was closed because it has been inactive for 14 days since being marked as stale." 20 | days-before-pr-stale: -1 21 | days-before-pr-close: -1 22 | repo-token: ${{ secrets.GITHUB_TOKEN }} 23 | -------------------------------------------------------------------------------- /.github/workflows/publish-to-pypi.yml: -------------------------------------------------------------------------------- 1 | name: Publish 📦 to PyPi 🚀 2 | 3 | on: 4 | push: 5 | tags: 6 | - "[0-9]+.[0-9]+.[0-9]+*" 7 | 8 | jobs: 9 | build-n-publish: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - uses: actions/checkout@master 13 | - name: Set up Python 3.10 14 | uses: actions/setup-python@v5 15 | with: 16 | python-version: '3.10' 17 | 18 | - name: Gets the tag version 19 | id: context 20 | run: | 21 | echo ::set-output name=TAG_VERSION::${GITHUB_REF#refs/tags/} 22 | 23 | - name: Setup the Python Environment by installing Poetry 24 | uses: ./.github/actions/setup-python-build-env 25 | 26 | - name: Code Quality Check 27 | shell: bash 28 | run: make install && make tests 29 | 30 | - name: Poetry bump version, build and publish 31 | shell: bash 32 | run: | 33 | proj_version=$(poetry version -s) 34 | if [ $proj_version != $TAG_VERSION ]; then echo "Version $proj_version, defined in pyproject.toml, does not match TAG $TAG_VERSION of this release"; exit 3; fi 35 | poetry publish --build -u __token__ -p $PYPI_TOKEN 36 | env: 37 | TAG_VERSION: ${{ steps.context.outputs.TAG_VERSION }} 38 | PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }} 39 | -------------------------------------------------------------------------------- /.github/workflows/pull-request.yml: -------------------------------------------------------------------------------- 1 | name: CI Tests 🐍 2 | 3 | on: 4 | pull_request: 5 | branches: 6 | - master 7 | 8 | jobs: 9 | tests: 10 | runs-on: ubuntu-latest 11 | strategy: 12 | matrix: 13 | version: 14 | - "3.8" 15 | - "3.9" 16 | - "3.10" 17 | - "3.11" 18 | - "3.12" 19 | - "3.13" 20 | steps: 21 | - uses: actions/checkout@master 22 | - name: Set up Python ${{ matrix.version }} 23 | uses: actions/setup-python@v5 24 | with: 25 | python-version: ${{ matrix.version }} 26 | 27 | - name: Setup the Python Environment by installing Poetry 28 | uses: ./.github/actions/setup-python-build-env 29 | 30 | - name: Code Quality Check 31 | shell: bash 32 | run: | 33 | make install && make tests 34 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | .pytest_cache/ 6 | # .bkp files 7 | *.bkp 8 | # C extensions 9 | *.so 10 | 11 | # Distribution / packaging 12 | .Python 13 | build/ 14 | develop-eggs/ 15 | dist/ 16 | downloads/ 17 | eggs/ 18 | .eggs/ 19 | lib/ 20 | lib64/ 21 | parts/ 22 | sdist/ 23 | var/ 24 | wheels/ 25 | *.egg-info/ 26 | .installed.cfg 27 | *.egg 28 | MANIFEST 29 | AUTHORS 30 | ChangeLog 31 | # PyInstaller 32 | # Usually these files are written by a python script from a template 33 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 34 | *.manifest 35 | *.spec 36 | 37 | # Installer logs 38 | pip-log.txt 39 | pip-delete-this-directory.txt 40 | 41 | # Unit test / coverage reports 42 | htmlcov/ 43 | .tox/ 44 | .coverage 45 | .coverage.* 46 | .cache 47 | nosetests.xml 48 | coverage.xml 49 | *.cover 50 | .hypothesis/ 51 | 52 | # Translations 53 | *.mo 54 | *.pot 55 | 56 | # Django stuff: 57 | *.log 58 | .static_storage/ 59 | .media/ 60 | local_settings.py 61 | 62 | # Flask stuff: 63 | instance/ 64 | .webassets-cache 65 | 66 | # Scrapy stuff: 67 | .scrapy 68 | 69 | # Sphinx documentation 70 | docs/_build/ 71 | 72 | # PyBuilder 73 | target/ 74 | 75 | # Jupyter Notebook 76 | .ipynb_checkpoints 77 | 78 | # pyenv 79 | .python-version 80 | 81 | # celery beat schedule file 82 | celerybeat-schedule 83 | 84 | # SageMath parsed files 85 | *.sage.py 86 | 87 | # Environments 88 | .env 89 | .venv 90 | env/ 91 | venv/ 92 | ENV/ 93 | env.bak/ 94 | venv.bak/ 95 | 96 | # Spyder project settings 97 | .spyderproject 98 | .spyproject 99 | 100 | # Rope project settings 101 | .ropeproject 102 | 103 | # mkdocs documentation 104 | /site 105 | 106 | # mypy 107 | .mypy_cache/ 108 | 109 | .idea/* 110 | 111 | ### OSX ### 112 | *.DS_Store 113 | -------------------------------------------------------------------------------- /.readthedocs.yaml: -------------------------------------------------------------------------------- 1 | # Read the Docs configuration file for Sphinx projects 2 | # See https://docs.readthedocs.io/en/stable/config-file/v2.html for details 3 | 4 | # Required 5 | version: 2 6 | 7 | # Set the OS, Python version and other tools you might need 8 | build: 9 | os: ubuntu-22.04 10 | tools: 11 | python: "3.12" 12 | # You can also specify other tool versions: 13 | # nodejs: "20" 14 | # rust: "1.70" 15 | # golang: "1.20" 16 | 17 | # Build documentation in the "docs/" directory with Sphinx 18 | sphinx: 19 | configuration: docs/source/conf.py 20 | # You can configure Sphinx to use a different builder, for instance use the dirhtml builder for simpler URLs 21 | # builder: "dirhtml" 22 | # Fail on all warnings to avoid broken references 23 | # fail_on_warning: true 24 | 25 | # Optionally build your docs in additional formats such as PDF and ePub 26 | # formats: 27 | # - pdf 28 | # - epub 29 | 30 | # Optional but recommended, declare the Python requirements required 31 | # to build your documentation 32 | # See https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html 33 | python: 34 | install: 35 | - requirements: docs/requirements.txt 36 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 The Mobility House 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /MANIFEST.in: -------------------------------------------------------------------------------- 1 | recursive-exclude tests * 2 | recursive-include ocpp/v16/schemas *.json 3 | recursive-include ocpp/v20/schemas *.json 4 | -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | # Security Policy 2 | 3 | This document outlines security procedures and general policies for this OCPP project. 4 | 5 | ## Supported Versions 6 | 7 | The currently supported versions of this OCPP project are: 8 | 9 | | Version | Supported | 10 | |----------|--------------------| 11 | | 2.0.0 | :soon: | 12 | | 1.0.0 | :white_check_mark: | 13 | | < 1.0.0 | :white_check_mark: | 14 | 15 | ## Reporting a Vulnerability 16 | 17 | Please include the requested information listed below (as much as you can provide) to help 18 | us better understand the nature and scope of the possible issue: 19 | 20 | - Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.) 21 | - Full paths of source file(s) related to the manifestation of the issue 22 | - The location of the affected source code (tag/branch/commit or direct URL) 23 | - Any special configuration required to reproduce the issue 24 | - Step-by-step instructions to reproduce the issue 25 | - Proof-of-concept or exploit code (if possible) 26 | - Impact of the issue, including how an attacker might exploit the issue 27 | 28 | This information will help us triage your report more quickly. 29 | 30 | ## Comments on this Policy 31 | 32 | If you have suggestions on how this process could be improved please submit a 33 | pull request. Thanks! 34 | -------------------------------------------------------------------------------- /SUPPORT.md: -------------------------------------------------------------------------------- 1 | # Support 2 | 3 | This article explains where to get help with this OCPP project. 4 | Please read through the following guidelines. 5 | 6 | > 👉 **Note**: before participating in our community, please read our 7 | > [code of conduct][coc]. 8 | > By interacting with this repository, organization, or community you agree to 9 | > abide by its terms. 10 | 11 | ## Asking quality questions 12 | 13 | Questions can go to [GitHub discussions][chat]. 14 | 15 | Help us help you! 16 | Spend time framing questions and add links and resources. 17 | Spending the extra time up front can help save everyone time in the long run. 18 | Here are some tips: 19 | 20 | * Search to find out if a similar question has been asked or a similar issue has been reported 21 | * Check to see if a PR is already in progress for the issue you want to raise 22 | * Try to define what you need help with: 23 | * Is there something in particular you want to do? 24 | * What problem are you encountering and what steps have you taken to try 25 | and fix it? 26 | * Is there a concept you don’t understand? 27 | * Provide sample code, such as a [CodeSandbox][cs] or video, if possible 28 | * Screenshots can help, but if there’s important text such as code or error 29 | messages in them, please also provide those as text 30 | * The more time you put into asking your question, the better we can help you 31 | 32 | ## Contributions 33 | 34 | See [`contributing.md`][contributing] on how to contribute. 35 | -------------------------------------------------------------------------------- /docs/requirements.txt: -------------------------------------------------------------------------------- 1 | Sphinx==8.2.3 2 | sphinx-rtd-theme==3.0.2 3 | -------------------------------------------------------------------------------- /docs/source/conf.py: -------------------------------------------------------------------------------- 1 | # Configuration file for the Sphinx documentation builder. 2 | # 3 | # For the full list of built-in configuration values, see the documentation: 4 | # https://www.sphinx-doc.org/en/master/usage/configuration.html 5 | 6 | # -- Project information ----------------------------------------------------- 7 | # https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information 8 | 9 | project = 'ocpp' 10 | copyright = '2025, Mohit Jain' 11 | author = 'Mohit Jain' 12 | release = '3.0.0' 13 | 14 | # -- General configuration --------------------------------------------------- 15 | # https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration 16 | 17 | extensions = ['sphinx.ext.autodoc', 'sphinx.ext.napoleon', 'sphinx.ext.viewcode'] 18 | 19 | templates_path = ['_templates'] 20 | exclude_patterns = [] 21 | 22 | 23 | 24 | # -- Options for HTML output ------------------------------------------------- 25 | # https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output 26 | 27 | html_theme = 'sphinx_rtd_theme' 28 | html_static_path = ['_static'] 29 | html_theme_options = { 30 | 'collapse_navigation': False, 31 | } 32 | -------------------------------------------------------------------------------- /docs/source/debugging.rst: -------------------------------------------------------------------------------- 1 | Debugging 2 | ========= 3 | 4 | Python's default log level is ``logging.WARNING``. As a result most of the logs generated by this package are discarded. 5 | 6 | To see the log output of this package lower the log level to ``logging.DEBUG``. 7 | 8 | .. code-block:: python 9 | 10 | import logging 11 | logging.basicConfig(level=logging.DEBUG) 12 | 13 | However, this approach defines the log level for the complete logging system. 14 | In other words: the log level of all dependencies is set to ``logging.DEBUG``. 15 | 16 | To lower the logs for this package only use the following code: 17 | 18 | .. code-block:: python 19 | 20 | import logging 21 | logging.getLogger('ocpp').setLevel(level=logging.DEBUG) 22 | logging.getLogger('ocpp').addHandler(logging.StreamHandler()) 23 | -------------------------------------------------------------------------------- /docs/source/index.rst: -------------------------------------------------------------------------------- 1 | .. ocpp documentation master file, created by 2 | sphinx-quickstart on Sun May 4 14:28:47 2025. 3 | You can adapt this file completely to your liking, but it should at least 4 | contain the root `toctree` directive. 5 | 6 | ocpp documentation 7 | ================== 8 | 9 | Add your content using ``reStructuredText`` syntax. See the 10 | `reStructuredText `_ 11 | documentation for details. 12 | 13 | 14 | .. toctree:: 15 | :maxdepth: 2 16 | :caption: Contents: 17 | 18 | installation 19 | usage/index 20 | debugging 21 | -------------------------------------------------------------------------------- /docs/source/installation.rst: -------------------------------------------------------------------------------- 1 | Installation 2 | ============ 3 | 4 | You can either install the project from Pypi: 5 | 6 | .. code-block:: bash 7 | 8 | pip install ocpp 9 | 10 | Or clone the project and install it manually using: 11 | 12 | .. code-block:: bash 13 | 14 | pip install . 15 | 16 | **Dependencies** 17 | 18 | - Python 3.7 or higher 19 | - The project also requires a websocket library. We recommend using `websockets`_: 20 | 21 | .. code-block:: bash 22 | 23 | pip install websockets 24 | 25 | .. _websockets: https://pypi.org/project/websockets/ 26 | -------------------------------------------------------------------------------- /docs/source/usage/index.rst: -------------------------------------------------------------------------------- 1 | Basic usage 2 | =========== 3 | 4 | This library provides foundational components for developing a Charging Station (Charge Point) and/or a Charging Station Management System (CSMS)/Central System. 5 | It is not a complete out-of-the-box solution, as implementations are typically tailored to specific use cases. 6 | Please refer to the accompanying documentation for guidance on how to effectively build a complete solution using this library. 7 | 8 | The Open Charge Point Protocol defines two roles: the charge point (or the client) and the central server (or the server). 9 | The ocpp Python package can be used to model both sides of the connection. 10 | 11 | .. toctree:: 12 | :maxdepth: 1 13 | 14 | server_side 15 | client_side 16 | -------------------------------------------------------------------------------- /docs/v16/ocpp-1.6 edition 2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mobilityhouse/ocpp/c7a3907ab84f16314a34fc399aec970241c8ac4d/docs/v16/ocpp-1.6 edition 2.pdf -------------------------------------------------------------------------------- /docs/v16/ocpp-1.6-errata-sheet.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mobilityhouse/ocpp/c7a3907ab84f16314a34fc399aec970241c8ac4d/docs/v16/ocpp-1.6-errata-sheet.pdf -------------------------------------------------------------------------------- /docs/v16/ocpp-1.6-security-whitepaper-edition-2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mobilityhouse/ocpp/c7a3907ab84f16314a34fc399aec970241c8ac4d/docs/v16/ocpp-1.6-security-whitepaper-edition-2.pdf -------------------------------------------------------------------------------- /docs/v16/ocpp-1.6.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mobilityhouse/ocpp/c7a3907ab84f16314a34fc399aec970241c8ac4d/docs/v16/ocpp-1.6.pdf -------------------------------------------------------------------------------- /docs/v16/ocpp-j-1.6-errata-sheet.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mobilityhouse/ocpp/c7a3907ab84f16314a34fc399aec970241c8ac4d/docs/v16/ocpp-j-1.6-errata-sheet.pdf -------------------------------------------------------------------------------- /docs/v16/ocpp-j-1.6-specification.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mobilityhouse/ocpp/c7a3907ab84f16314a34fc399aec970241c8ac4d/docs/v16/ocpp-j-1.6-specification.pdf -------------------------------------------------------------------------------- /docs/v201/OCPP-2.0.1_edition2_errata_2023-12.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mobilityhouse/ocpp/c7a3907ab84f16314a34fc399aec970241c8ac4d/docs/v201/OCPP-2.0.1_edition2_errata_2023-12.pdf -------------------------------------------------------------------------------- /docs/v201/OCPP-2.0.1_part0_introduction.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mobilityhouse/ocpp/c7a3907ab84f16314a34fc399aec970241c8ac4d/docs/v201/OCPP-2.0.1_part0_introduction.pdf -------------------------------------------------------------------------------- /docs/v201/OCPP-2.0.1_part1_architecture_topology.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mobilityhouse/ocpp/c7a3907ab84f16314a34fc399aec970241c8ac4d/docs/v201/OCPP-2.0.1_part1_architecture_topology.pdf -------------------------------------------------------------------------------- /docs/v201/OCPP-2.0.1_part2_appendices_v13.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mobilityhouse/ocpp/c7a3907ab84f16314a34fc399aec970241c8ac4d/docs/v201/OCPP-2.0.1_part2_appendices_v13.pdf -------------------------------------------------------------------------------- /docs/v201/OCPP-2.0.1_part2_errata_v20.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mobilityhouse/ocpp/c7a3907ab84f16314a34fc399aec970241c8ac4d/docs/v201/OCPP-2.0.1_part2_errata_v20.pdf -------------------------------------------------------------------------------- /docs/v201/OCPP-2.0.1_part2_specification_edition2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mobilityhouse/ocpp/c7a3907ab84f16314a34fc399aec970241c8ac4d/docs/v201/OCPP-2.0.1_part2_specification_edition2.pdf -------------------------------------------------------------------------------- /docs/v201/OCPP-2.0.1_part4_ocpp-j-specification.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mobilityhouse/ocpp/c7a3907ab84f16314a34fc399aec970241c8ac4d/docs/v201/OCPP-2.0.1_part4_ocpp-j-specification.pdf -------------------------------------------------------------------------------- /docs/v201/OCPP-2.0.1_part5_certification_profiles.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mobilityhouse/ocpp/c7a3907ab84f16314a34fc399aec970241c8ac4d/docs/v201/OCPP-2.0.1_part5_certification_profiles.pdf -------------------------------------------------------------------------------- /docs/v201/OCPP-2.0.1_part6_test_cases.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mobilityhouse/ocpp/c7a3907ab84f16314a34fc399aec970241c8ac4d/docs/v201/OCPP-2.0.1_part6_test_cases.pdf -------------------------------------------------------------------------------- /docs/v21/OCPP-2.1_edition1_part0_introduction.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mobilityhouse/ocpp/c7a3907ab84f16314a34fc399aec970241c8ac4d/docs/v21/OCPP-2.1_edition1_part0_introduction.pdf -------------------------------------------------------------------------------- /docs/v21/OCPP-2.1_edition1_part1_architecture_topology.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mobilityhouse/ocpp/c7a3907ab84f16314a34fc399aec970241c8ac4d/docs/v21/OCPP-2.1_edition1_part1_architecture_topology.pdf -------------------------------------------------------------------------------- /docs/v21/OCPP-2.1_edition1_part2_specification.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mobilityhouse/ocpp/c7a3907ab84f16314a34fc399aec970241c8ac4d/docs/v21/OCPP-2.1_edition1_part2_specification.pdf -------------------------------------------------------------------------------- /docs/v21/OCPP-2.1_edition1_part4_ocpp-j-specification.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mobilityhouse/ocpp/c7a3907ab84f16314a34fc399aec970241c8ac4d/docs/v21/OCPP-2.1_edition1_part4_ocpp-j-specification.pdf -------------------------------------------------------------------------------- /docs/v21/OCPP-2.1_part2_appendices_v20.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mobilityhouse/ocpp/c7a3907ab84f16314a34fc399aec970241c8ac4d/docs/v21/OCPP-2.1_part2_appendices_v20.pdf -------------------------------------------------------------------------------- /examples/v16/charge_point.py: -------------------------------------------------------------------------------- 1 | import asyncio 2 | import logging 3 | 4 | try: 5 | import websockets 6 | except ModuleNotFoundError: 7 | print("This example relies on the 'websockets' package.") 8 | print("Please install it by running: ") 9 | print() 10 | print(" $ pip install websockets") 11 | import sys 12 | 13 | sys.exit(1) 14 | 15 | 16 | from ocpp.v16 import ChargePoint as cp 17 | from ocpp.v16 import call 18 | from ocpp.v16.enums import RegistrationStatus 19 | 20 | logging.basicConfig(level=logging.INFO) 21 | 22 | 23 | class ChargePoint(cp): 24 | async def send_boot_notification(self): 25 | request = call.BootNotification( 26 | charge_point_model="Optimus", charge_point_vendor="The Mobility House" 27 | ) 28 | 29 | response = await self.call(request) 30 | 31 | if response.status == RegistrationStatus.accepted: 32 | print("Connected to central system.") 33 | 34 | 35 | async def main(): 36 | async with websockets.connect( 37 | "ws://localhost:9000/CP_1", subprotocols=["ocpp1.6"] 38 | ) as ws: 39 | 40 | cp = ChargePoint("CP_1", ws) 41 | 42 | await asyncio.gather(cp.start(), cp.send_boot_notification()) 43 | 44 | 45 | if __name__ == "__main__": 46 | # asyncio.run() is used when running this example with Python >= 3.7v 47 | asyncio.run(main()) 48 | -------------------------------------------------------------------------------- /examples/v201/charge_point.py: -------------------------------------------------------------------------------- 1 | import asyncio 2 | import logging 3 | 4 | try: 5 | import websockets 6 | except ModuleNotFoundError: 7 | print("This example relies on the 'websockets' package.") 8 | print("Please install it by running: ") 9 | print() 10 | print(" $ pip install websockets") 11 | import sys 12 | 13 | sys.exit(1) 14 | 15 | 16 | from ocpp.v201 import ChargePoint as cp 17 | from ocpp.v201 import call 18 | 19 | logging.basicConfig(level=logging.INFO) 20 | 21 | 22 | class ChargePoint(cp): 23 | async def send_heartbeat(self, interval): 24 | request = call.Heartbeat() 25 | while True: 26 | await self.call(request) 27 | await asyncio.sleep(interval) 28 | 29 | async def send_boot_notification(self): 30 | request = call.BootNotification( 31 | charging_station={"model": "Wallbox XYZ", "vendor_name": "anewone"}, 32 | reason="PowerUp", 33 | ) 34 | response = await self.call(request) 35 | 36 | if response.status == "Accepted": 37 | print("Connected to central system.") 38 | await self.send_heartbeat(response.interval) 39 | 40 | 41 | async def main(): 42 | async with websockets.connect( 43 | "ws://localhost:9000/CP_1", subprotocols=["ocpp2.0.1"] 44 | ) as ws: 45 | 46 | charge_point = ChargePoint("CP_1", ws) 47 | await asyncio.gather( 48 | charge_point.start(), charge_point.send_boot_notification() 49 | ) 50 | 51 | 52 | if __name__ == "__main__": 53 | # asyncio.run() is used when running this example with Python >= 3.7v 54 | asyncio.run(main()) 55 | -------------------------------------------------------------------------------- /examples/v21/charge_point.py: -------------------------------------------------------------------------------- 1 | import asyncio 2 | import logging 3 | 4 | try: 5 | import websockets 6 | except ModuleNotFoundError: 7 | print("This example relies on the 'websockets' package.") 8 | print("Please install it by running: ") 9 | print() 10 | print(" $ pip install websockets") 11 | import sys 12 | 13 | sys.exit(1) 14 | 15 | 16 | from ocpp.v21 import ChargePoint as cp 17 | from ocpp.v21 import call 18 | from ocpp.v21.datatypes import ChargingStationType 19 | 20 | logging.basicConfig(level=logging.INFO) 21 | 22 | 23 | class ChargePoint(cp): 24 | async def send_heartbeat(self, interval): 25 | request = call.Heartbeat() 26 | while True: 27 | await self.call(request) 28 | await asyncio.sleep(interval) 29 | 30 | async def send_boot_notification(self): 31 | print("YESSSS") 32 | request = call.BootNotification( 33 | charging_station=ChargingStationType( 34 | model="Wallbox XYZ", vendor_name="anewone" 35 | ), 36 | reason="PowerUp", 37 | ) 38 | response = await self.call(request) 39 | 40 | if response.status == "Accepted": 41 | print("Connected to central system.") 42 | await self.send_heartbeat(response.interval) 43 | 44 | 45 | async def main(): 46 | async with websockets.connect( 47 | "ws://localhost:9000/CP_1", subprotocols=["ocpp2.1"] 48 | ) as ws: 49 | 50 | charge_point = ChargePoint("CP_1", ws) 51 | await asyncio.gather( 52 | charge_point.start(), charge_point.send_boot_notification() 53 | ) 54 | 55 | 56 | if __name__ == "__main__": 57 | # asyncio.run() is used when running this example with Python >= 3.7v 58 | asyncio.run(main()) 59 | -------------------------------------------------------------------------------- /ocpp/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mobilityhouse/ocpp/c7a3907ab84f16314a34fc399aec970241c8ac4d/ocpp/__init__.py -------------------------------------------------------------------------------- /ocpp/experimental/v21/README.rst: -------------------------------------------------------------------------------- 1 | ============= 2 | Experimental Module For OCPP 2.1 3 | ============= 4 | Changes made in this module will not follow the traditional release cycle. 5 | This allows for breaking changes to be introduced, as the standard is not finalised. 6 | -------------------------------------------------------------------------------- /ocpp/v16/__init__.py: -------------------------------------------------------------------------------- 1 | from ocpp.charge_point import ChargePoint as cp 2 | from ocpp.v16 import call, call_result 3 | 4 | 5 | class ChargePoint(cp): 6 | _call = call 7 | _call_result = call_result 8 | _ocpp_version = "1.6" 9 | -------------------------------------------------------------------------------- /ocpp/v16/schemas/Authorize.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-04/schema#", 3 | "title": "AuthorizeRequest", 4 | "type": "object", 5 | "properties": { 6 | "idTag": { 7 | "type": "string", 8 | "maxLength": 20 9 | } 10 | }, 11 | "additionalProperties": false, 12 | "required": [ 13 | "idTag" 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /ocpp/v16/schemas/AuthorizeResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-04/schema#", 3 | "title": "AuthorizeResponse", 4 | "type": "object", 5 | "properties": { 6 | "idTagInfo": { 7 | "type": "object", 8 | "properties": { 9 | "expiryDate": { 10 | "type": "string", 11 | "format": "date-time" 12 | }, 13 | "parentIdTag": { 14 | "type": "string", 15 | "maxLength": 20 16 | }, 17 | "status": { 18 | "type": "string", 19 | "additionalProperties": false, 20 | "enum": [ 21 | "Accepted", 22 | "Blocked", 23 | "Expired", 24 | "Invalid", 25 | "ConcurrentTx" 26 | ] 27 | } 28 | }, 29 | "additionalProperties": false, 30 | "required": [ 31 | "status" 32 | ] 33 | } 34 | }, 35 | "additionalProperties": false, 36 | "required": [ 37 | "idTagInfo" 38 | ] 39 | } 40 | -------------------------------------------------------------------------------- /ocpp/v16/schemas/BootNotification.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-04/schema#", 3 | "title": "BootNotificationRequest", 4 | "type": "object", 5 | "properties": { 6 | "chargePointVendor": { 7 | "type": "string", 8 | "maxLength": 20 9 | }, 10 | "chargePointModel": { 11 | "type": "string", 12 | "maxLength": 20 13 | }, 14 | "chargePointSerialNumber": { 15 | "type": "string", 16 | "maxLength": 25 17 | }, 18 | "chargeBoxSerialNumber": { 19 | "type": "string", 20 | "maxLength": 25 21 | }, 22 | "firmwareVersion": { 23 | "type": "string", 24 | "maxLength": 50 25 | }, 26 | "iccid": { 27 | "type": "string", 28 | "maxLength": 20 29 | }, 30 | "imsi": { 31 | "type": "string", 32 | "maxLength": 20 33 | }, 34 | "meterType": { 35 | "type": "string", 36 | "maxLength": 25 37 | }, 38 | "meterSerialNumber": { 39 | "type": "string", 40 | "maxLength": 25 41 | } 42 | }, 43 | "additionalProperties": false, 44 | "required": [ 45 | "chargePointVendor", 46 | "chargePointModel" 47 | ] 48 | } 49 | -------------------------------------------------------------------------------- /ocpp/v16/schemas/BootNotificationResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-04/schema#", 3 | "title": "BootNotificationResponse", 4 | "type": "object", 5 | "properties": { 6 | "status": { 7 | "type": "string", 8 | "additionalProperties": false, 9 | "enum": [ 10 | "Accepted", 11 | "Pending", 12 | "Rejected" 13 | ] 14 | }, 15 | "currentTime": { 16 | "type": "string", 17 | "format": "date-time" 18 | }, 19 | "interval": { 20 | "type": "integer" 21 | } 22 | }, 23 | "additionalProperties": false, 24 | "required": [ 25 | "status", 26 | "currentTime", 27 | "interval" 28 | ] 29 | } 30 | -------------------------------------------------------------------------------- /ocpp/v16/schemas/CancelReservation.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-04/schema#", 3 | "title": "CancelReservationRequest", 4 | "type": "object", 5 | "properties": { 6 | "reservationId": { 7 | "type": "integer" 8 | } 9 | }, 10 | "additionalProperties": false, 11 | "required": [ 12 | "reservationId" 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /ocpp/v16/schemas/CancelReservationResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-04/schema#", 3 | "title": "CancelReservationResponse", 4 | "type": "object", 5 | "properties": { 6 | "status": { 7 | "type": "string", 8 | "additionalProperties": false, 9 | "enum": [ 10 | "Accepted", 11 | "Rejected" 12 | ] 13 | } 14 | }, 15 | "additionalProperties": false, 16 | "required": [ 17 | "status" 18 | ] 19 | } 20 | -------------------------------------------------------------------------------- /ocpp/v16/schemas/CertificateSigned.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:1.6:2020:3:CertificateSigned.req", 4 | "type": "object", 5 | "properties": { 6 | "certificateChain": { 7 | "type": "string", 8 | "maxLength": 10000 9 | } 10 | }, 11 | "additionalProperties": false, 12 | "required": [ 13 | "certificateChain" 14 | ] 15 | } -------------------------------------------------------------------------------- /ocpp/v16/schemas/CertificateSignedResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:1.6:2020:3:CertificateSigned.conf", 4 | "definitions": { 5 | "CertificateSignedStatusEnumType": { 6 | "type": "string", 7 | "additionalProperties": false, 8 | "enum": [ 9 | "Accepted", 10 | "Rejected" 11 | ] 12 | } 13 | }, 14 | "type": "object", 15 | "additionalProperties": false, 16 | "properties": { 17 | "status": { 18 | "$ref": "#/definitions/CertificateSignedStatusEnumType" 19 | } 20 | }, 21 | "required": [ 22 | "status" 23 | ] 24 | } -------------------------------------------------------------------------------- /ocpp/v16/schemas/ChangeAvailability.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-04/schema#", 3 | "title": "ChangeAvailabilityRequest", 4 | "type": "object", 5 | "properties": { 6 | "connectorId": { 7 | "type": "integer" 8 | }, 9 | "type": { 10 | "type": "string", 11 | "additionalProperties": false, 12 | "enum": [ 13 | "Inoperative", 14 | "Operative" 15 | ] 16 | } 17 | }, 18 | "additionalProperties": false, 19 | "required": [ 20 | "connectorId", 21 | "type" 22 | ] 23 | } 24 | -------------------------------------------------------------------------------- /ocpp/v16/schemas/ChangeAvailabilityResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-04/schema#", 3 | "title": "ChangeAvailabilityResponse", 4 | "type": "object", 5 | "properties": { 6 | "status": { 7 | "type": "string", 8 | "additionalProperties": false, 9 | "enum": [ 10 | "Accepted", 11 | "Rejected", 12 | "Scheduled" 13 | ] 14 | } 15 | }, 16 | "additionalProperties": false, 17 | "required": [ 18 | "status" 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /ocpp/v16/schemas/ChangeConfiguration.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-04/schema#", 3 | "title": "ChangeConfigurationRequest", 4 | "type": "object", 5 | "properties": { 6 | "key": { 7 | "type": "string", 8 | "maxLength": 50 9 | }, 10 | "value": { 11 | "type": "string", 12 | "maxLength": 500 13 | } 14 | }, 15 | "additionalProperties": false, 16 | "required": [ 17 | "key", 18 | "value" 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /ocpp/v16/schemas/ChangeConfigurationResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-04/schema#", 3 | "title": "ChangeConfigurationResponse", 4 | "type": "object", 5 | "properties": { 6 | "status": { 7 | "type": "string", 8 | "additionalProperties": false, 9 | "enum": [ 10 | "Accepted", 11 | "Rejected", 12 | "RebootRequired", 13 | "NotSupported" 14 | ] 15 | } 16 | }, 17 | "additionalProperties": false, 18 | "required": [ 19 | "status" 20 | ] 21 | } 22 | -------------------------------------------------------------------------------- /ocpp/v16/schemas/ClearCache.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-04/schema#", 3 | "title": "ClearCacheRequest", 4 | "type": "object", 5 | "properties": {}, 6 | "additionalProperties": false 7 | } 8 | -------------------------------------------------------------------------------- /ocpp/v16/schemas/ClearCacheResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-04/schema#", 3 | "title": "ClearCacheResponse", 4 | "type": "object", 5 | "properties": { 6 | "status": { 7 | "type": "string", 8 | "additionalProperties": false, 9 | "enum": [ 10 | "Accepted", 11 | "Rejected" 12 | ] 13 | } 14 | }, 15 | "additionalProperties": false, 16 | "required": [ 17 | "status" 18 | ] 19 | } 20 | -------------------------------------------------------------------------------- /ocpp/v16/schemas/ClearChargingProfile.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-04/schema#", 3 | "title": "ClearChargingProfileRequest", 4 | "type": "object", 5 | "properties": { 6 | "id": { 7 | "type": "integer" 8 | }, 9 | "connectorId": { 10 | "type": "integer" 11 | }, 12 | "chargingProfilePurpose": { 13 | "type": "string", 14 | "additionalProperties": false, 15 | "enum": [ 16 | "ChargePointMaxProfile", 17 | "TxDefaultProfile", 18 | "TxProfile" 19 | ] 20 | }, 21 | "stackLevel": { 22 | "type": "integer" 23 | } 24 | }, 25 | "additionalProperties": false 26 | } 27 | -------------------------------------------------------------------------------- /ocpp/v16/schemas/ClearChargingProfileResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-04/schema#", 3 | "title": "ClearChargingProfileResponse", 4 | "type": "object", 5 | "properties": { 6 | "status": { 7 | "type": "string", 8 | "additionalProperties": false, 9 | "enum": [ 10 | "Accepted", 11 | "Unknown" 12 | ] 13 | } 14 | }, 15 | "additionalProperties": false, 16 | "required": [ 17 | "status" 18 | ] 19 | } 20 | -------------------------------------------------------------------------------- /ocpp/v16/schemas/DataTransfer.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-04/schema#", 3 | "title": "DataTransferRequest", 4 | "type": "object", 5 | "properties": { 6 | "vendorId": { 7 | "type": "string", 8 | "maxLength": 255 9 | }, 10 | "messageId": { 11 | "type": "string", 12 | "maxLength": 50 13 | }, 14 | "data": { 15 | "type": "string" 16 | } 17 | }, 18 | "additionalProperties": false, 19 | "required": [ 20 | "vendorId" 21 | ] 22 | } 23 | -------------------------------------------------------------------------------- /ocpp/v16/schemas/DataTransferResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-04/schema#", 3 | "title": "DataTransferResponse", 4 | "type": "object", 5 | "properties": { 6 | "status": { 7 | "type": "string", 8 | "additionalProperties": false, 9 | "enum": [ 10 | "Accepted", 11 | "Rejected", 12 | "UnknownMessageId", 13 | "UnknownVendorId" 14 | ] 15 | }, 16 | "data": { 17 | "type": "string" 18 | } 19 | }, 20 | "additionalProperties": false, 21 | "required": [ 22 | "status" 23 | ] 24 | } 25 | -------------------------------------------------------------------------------- /ocpp/v16/schemas/DeleteCertificate.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:1.6:2020:3:DeleteCertificate.req", 4 | "definitions": { 5 | "HashAlgorithmEnumType": { 6 | "type": "string", 7 | "additionalProperties": false, 8 | "enum": [ 9 | "SHA256", 10 | "SHA384", 11 | "SHA512" 12 | ] 13 | }, 14 | "CertificateHashDataType": { 15 | "type": "object", 16 | "additionalProperties": false, 17 | "properties": { 18 | "hashAlgorithm": { 19 | "$ref": "#/definitions/HashAlgorithmEnumType" 20 | }, 21 | "issuerNameHash": { 22 | "type": "string", 23 | "maxLength": 128 24 | }, 25 | "issuerKeyHash": { 26 | "type": "string", 27 | "maxLength": 128 28 | }, 29 | "serialNumber": { 30 | "type": "string", 31 | "maxLength": 40 32 | } 33 | }, 34 | "required": [ 35 | "hashAlgorithm", 36 | "issuerNameHash", 37 | "issuerKeyHash", 38 | "serialNumber" 39 | ] 40 | } 41 | }, 42 | "type": "object", 43 | "additionalProperties": false, 44 | "properties": { 45 | "certificateHashData": { 46 | "$ref": "#/definitions/CertificateHashDataType" 47 | } 48 | }, 49 | "required": [ 50 | "certificateHashData" 51 | ] 52 | } -------------------------------------------------------------------------------- /ocpp/v16/schemas/DeleteCertificateResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:1.6:2020:3:DeleteCertificate.conf", 4 | "definitions": { 5 | "DeleteCertificateStatusEnumType": { 6 | "type": "string", 7 | "additionalProperties": false, 8 | "enum": [ 9 | "Accepted", 10 | "Failed", 11 | "NotFound" 12 | ] 13 | } 14 | }, 15 | "type": "object", 16 | "additionalProperties": false, 17 | "properties": { 18 | "status": { 19 | "$ref": "#/definitions/DeleteCertificateStatusEnumType" 20 | } 21 | }, 22 | "required": [ 23 | "status" 24 | ] 25 | } -------------------------------------------------------------------------------- /ocpp/v16/schemas/DiagnosticsStatusNotification.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-04/schema#", 3 | "title": "DiagnosticsStatusNotificationRequest", 4 | "type": "object", 5 | "properties": { 6 | "status": { 7 | "type": "string", 8 | "additionalProperties": false, 9 | "enum": [ 10 | "Idle", 11 | "Uploaded", 12 | "UploadFailed", 13 | "Uploading" 14 | ] 15 | } 16 | }, 17 | "additionalProperties": false, 18 | "required": [ 19 | "status" 20 | ] 21 | } 22 | -------------------------------------------------------------------------------- /ocpp/v16/schemas/DiagnosticsStatusNotificationResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-04/schema#", 3 | "title": "DiagnosticsStatusNotificationResponse", 4 | "type": "object", 5 | "properties": {}, 6 | "additionalProperties": false 7 | } 8 | -------------------------------------------------------------------------------- /ocpp/v16/schemas/ExtendedTriggerMessage.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:1.6:2020:3:ExtendedTriggerMessage.req", 4 | "definitions": { 5 | "MessageTriggerEnumType": { 6 | "type": "string", 7 | "additionalProperties": false, 8 | "enum": [ 9 | "BootNotification", 10 | "LogStatusNotification", 11 | "FirmwareStatusNotification", 12 | "Heartbeat", 13 | "MeterValues", 14 | "SignChargePointCertificate", 15 | "StatusNotification" 16 | ] 17 | } 18 | }, 19 | "type": "object", 20 | "additionalProperties": false, 21 | "properties": { 22 | "requestedMessage": { 23 | "$ref": "#/definitions/MessageTriggerEnumType" 24 | }, 25 | "connectorId": { 26 | "type": "integer" 27 | } 28 | }, 29 | "required": [ 30 | "requestedMessage" 31 | ] 32 | } -------------------------------------------------------------------------------- /ocpp/v16/schemas/ExtendedTriggerMessageResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:1.6:2020:3:ExtendedTriggerMessage.conf", 4 | "definitions": { 5 | "TriggerMessageStatusEnumType": { 6 | "type": "string", 7 | "additionalProperties": false, 8 | "enum": [ 9 | "Accepted", 10 | "Rejected", 11 | "NotImplemented" 12 | ] 13 | } 14 | }, 15 | "type": "object", 16 | "additionalProperties": false, 17 | "properties": { 18 | "status": { 19 | "$ref": "#/definitions/TriggerMessageStatusEnumType" 20 | } 21 | }, 22 | "required": [ 23 | "status" 24 | ] 25 | } -------------------------------------------------------------------------------- /ocpp/v16/schemas/FirmwareStatusNotification.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-04/schema#", 3 | "title": "FirmwareStatusNotificationRequest", 4 | "type": "object", 5 | "properties": { 6 | "status": { 7 | "type": "string", 8 | "additionalProperties": false, 9 | "enum": [ 10 | "Downloaded", 11 | "DownloadFailed", 12 | "Downloading", 13 | "Idle", 14 | "InstallationFailed", 15 | "Installing", 16 | "Installed" 17 | ] 18 | } 19 | }, 20 | "additionalProperties": false, 21 | "required": [ 22 | "status" 23 | ] 24 | } 25 | -------------------------------------------------------------------------------- /ocpp/v16/schemas/FirmwareStatusNotificationResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-04/schema#", 3 | "title": "FirmwareStatusNotificationResponse", 4 | "type": "object", 5 | "properties": {}, 6 | "additionalProperties": false 7 | } 8 | -------------------------------------------------------------------------------- /ocpp/v16/schemas/GetCompositeSchedule.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-04/schema#", 3 | "title": "GetCompositeScheduleRequest", 4 | "type": "object", 5 | "properties": { 6 | "connectorId": { 7 | "type": "integer" 8 | }, 9 | "duration": { 10 | "type": "integer" 11 | }, 12 | "chargingRateUnit": { 13 | "type": "string", 14 | "additionalProperties": false, 15 | "enum": [ 16 | "A", 17 | "W" 18 | ] 19 | } 20 | }, 21 | "additionalProperties": false, 22 | "required": [ 23 | "connectorId", 24 | "duration" 25 | ] 26 | } 27 | -------------------------------------------------------------------------------- /ocpp/v16/schemas/GetConfiguration.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-04/schema#", 3 | "title": "GetConfigurationRequest", 4 | "type": "object", 5 | "properties": { 6 | "key": { 7 | "type": "array", 8 | "items": { 9 | "type": "string", 10 | "maxLength": 50 11 | } 12 | } 13 | }, 14 | "additionalProperties": false 15 | } 16 | -------------------------------------------------------------------------------- /ocpp/v16/schemas/GetConfigurationResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-04/schema#", 3 | "title": "GetConfigurationResponse", 4 | "type": "object", 5 | "properties": { 6 | "configurationKey": { 7 | "type": "array", 8 | "items": { 9 | "type": "object", 10 | "properties": { 11 | "key": { 12 | "type": "string", 13 | "maxLength": 50 14 | }, 15 | "readonly": { 16 | "type": "boolean" 17 | }, 18 | "value": { 19 | "type": "string", 20 | "maxLength": 500 21 | } 22 | }, 23 | "additionalProperties": false, 24 | "required": [ 25 | "key", 26 | "readonly" 27 | ] 28 | } 29 | }, 30 | "unknownKey": { 31 | "type": "array", 32 | "items": { 33 | "type": "string", 34 | "maxLength": 50 35 | } 36 | } 37 | }, 38 | "additionalProperties": false 39 | } 40 | -------------------------------------------------------------------------------- /ocpp/v16/schemas/GetDiagnostics.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-04/schema#", 3 | "title": "GetDiagnosticsRequest", 4 | "type": "object", 5 | "properties": { 6 | "location": { 7 | "type": "string", 8 | "format": "uri" 9 | }, 10 | "retries": { 11 | "type": "integer" 12 | }, 13 | "retryInterval": { 14 | "type": "integer" 15 | }, 16 | "startTime": { 17 | "type": "string", 18 | "format": "date-time" 19 | }, 20 | "stopTime": { 21 | "type": "string", 22 | "format": "date-time" 23 | } 24 | }, 25 | "additionalProperties": false, 26 | "required": [ 27 | "location" 28 | ] 29 | } 30 | -------------------------------------------------------------------------------- /ocpp/v16/schemas/GetDiagnosticsResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-04/schema#", 3 | "title": "GetDiagnosticsResponse", 4 | "type": "object", 5 | "properties": { 6 | "fileName": { 7 | "type": "string", 8 | "maxLength": 255 9 | } 10 | }, 11 | "additionalProperties": false 12 | } 13 | -------------------------------------------------------------------------------- /ocpp/v16/schemas/GetInstalledCertificateIds.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:1.6:2020:3:GetInstalledCertificateIds.req", 4 | "definitions": { 5 | "CertificateUseEnumType": { 6 | "type": "string", 7 | "additionalProperties": false, 8 | "enum": [ 9 | "CentralSystemRootCertificate", 10 | "ManufacturerRootCertificate" 11 | ] 12 | } 13 | }, 14 | "type": "object", 15 | "additionalProperties": false, 16 | "properties": { 17 | "certificateType": { 18 | "$ref": "#/definitions/CertificateUseEnumType" 19 | } 20 | }, 21 | "required": [ 22 | "certificateType" 23 | ] 24 | } -------------------------------------------------------------------------------- /ocpp/v16/schemas/GetInstalledCertificateIdsResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:1.6:2020:3:GetInstalledCertificateIds.conf", 4 | "definitions": { 5 | "GetInstalledCertificateStatusEnumType": { 6 | "type": "string", 7 | "additionalProperties": false, 8 | "enum": [ 9 | "Accepted", 10 | "NotFound" 11 | ] 12 | }, 13 | "HashAlgorithmEnumType": { 14 | "type": "string", 15 | "additionalProperties": false, 16 | "enum": [ 17 | "SHA256", 18 | "SHA384", 19 | "SHA512" 20 | ] 21 | }, 22 | "CertificateHashDataType": { 23 | "javaType": "CertificateHashData", 24 | "type": "object", 25 | "additionalProperties": false, 26 | "properties": { 27 | "hashAlgorithm": { 28 | "$ref": "#/definitions/HashAlgorithmEnumType" 29 | }, 30 | "issuerNameHash": { 31 | "type": "string", 32 | "maxLength": 128 33 | }, 34 | "issuerKeyHash": { 35 | "type": "string", 36 | "maxLength": 128 37 | }, 38 | "serialNumber": { 39 | "type": "string", 40 | "maxLength": 40 41 | } 42 | }, 43 | "required": [ 44 | "hashAlgorithm", 45 | "issuerNameHash", 46 | "issuerKeyHash", 47 | "serialNumber" 48 | ] 49 | } 50 | }, 51 | "type": "object", 52 | "additionalProperties": false, 53 | "properties": { 54 | "certificateHashData": { 55 | "type": "array", 56 | "additionalItems": false, 57 | "items": { 58 | "$ref": "#/definitions/CertificateHashDataType" 59 | }, 60 | "minItems": 1 61 | }, 62 | "status": { 63 | "$ref": "#/definitions/GetInstalledCertificateStatusEnumType" 64 | } 65 | }, 66 | "required": [ 67 | "status" 68 | ] 69 | } -------------------------------------------------------------------------------- /ocpp/v16/schemas/GetLocalListVersion.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-04/schema#", 3 | "title": "GetLocalListVersionRequest", 4 | "type": "object", 5 | "properties": {}, 6 | "additionalProperties": false 7 | } 8 | -------------------------------------------------------------------------------- /ocpp/v16/schemas/GetLocalListVersionResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-04/schema#", 3 | "title": "GetLocalListVersionResponse", 4 | "type": "object", 5 | "properties": { 6 | "listVersion": { 7 | "type": "integer" 8 | } 9 | }, 10 | "additionalProperties": false, 11 | "required": [ 12 | "listVersion" 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /ocpp/v16/schemas/GetLog.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:1.6:2020:3:GetLog.req", 4 | "definitions": { 5 | "LogEnumType": { 6 | "type": "string", 7 | "additionalProperties": false, 8 | "enum": [ 9 | "DiagnosticsLog", 10 | "SecurityLog" 11 | ] 12 | }, 13 | "LogParametersType": { 14 | "type": "object", 15 | "additionalProperties": false, 16 | "properties": { 17 | "remoteLocation": { 18 | "type": "string", 19 | "maxLength": 512 20 | }, 21 | "oldestTimestamp": { 22 | "type": "string", 23 | "format": "date-time" 24 | }, 25 | "latestTimestamp": { 26 | "type": "string", 27 | "format": "date-time" 28 | } 29 | }, 30 | "required": [ 31 | "remoteLocation" 32 | ] 33 | } 34 | }, 35 | "type": "object", 36 | "additionalProperties": false, 37 | "properties": { 38 | "log": { 39 | "$ref": "#/definitions/LogParametersType" 40 | }, 41 | "logType": { 42 | "$ref": "#/definitions/LogEnumType" 43 | }, 44 | "requestId": { 45 | "type": "integer" 46 | }, 47 | "retries": { 48 | "type": "integer" 49 | }, 50 | "retryInterval": { 51 | "type": "integer" 52 | } 53 | }, 54 | "required": [ 55 | "logType", 56 | "requestId", 57 | "log" 58 | ] 59 | } -------------------------------------------------------------------------------- /ocpp/v16/schemas/GetLogResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:1.6:2020:3:GetLog.conf", 4 | "definitions": { 5 | "LogStatusEnumType": { 6 | "type": "string", 7 | "additionalProperties": false, 8 | "enum": [ 9 | "Accepted", 10 | "Rejected", 11 | "AcceptedCanceled" 12 | ] 13 | } 14 | }, 15 | "type": "object", 16 | "additionalProperties": false, 17 | "properties": { 18 | "status": { 19 | "$ref": "#/definitions/LogStatusEnumType" 20 | }, 21 | "filename": { 22 | "type": "string", 23 | "maxLength": 255 24 | } 25 | }, 26 | "required": [ 27 | "status" 28 | ] 29 | } -------------------------------------------------------------------------------- /ocpp/v16/schemas/Heartbeat.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-04/schema#", 3 | "title": "HeartbeatRequest", 4 | "type": "object", 5 | "properties": {}, 6 | "additionalProperties": false 7 | } 8 | -------------------------------------------------------------------------------- /ocpp/v16/schemas/HeartbeatResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-04/schema#", 3 | "title": "HeartbeatResponse", 4 | "type": "object", 5 | "properties": { 6 | "currentTime": { 7 | "type": "string", 8 | "format": "date-time" 9 | } 10 | }, 11 | "additionalProperties": false, 12 | "required": [ 13 | "currentTime" 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /ocpp/v16/schemas/InstallCertificate.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:1.6:2020:3:InstallCertificate.req", 4 | "definitions": { 5 | "CertificateUseEnumType": { 6 | "type": "string", 7 | "additionalProperties": false, 8 | "enum": [ 9 | "CentralSystemRootCertificate", 10 | "ManufacturerRootCertificate" 11 | ] 12 | } 13 | }, 14 | "type": "object", 15 | "additionalProperties": false, 16 | "properties": { 17 | "certificateType": { 18 | "$ref": "#/definitions/CertificateUseEnumType" 19 | }, 20 | "certificate": { 21 | "type": "string", 22 | "maxLength": 5500 23 | } 24 | }, 25 | "required": [ 26 | "certificateType", 27 | "certificate" 28 | ] 29 | } -------------------------------------------------------------------------------- /ocpp/v16/schemas/InstallCertificateResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:1.6:2020:3:InstallCertificate.conf", 4 | "definitions": { 5 | "InstallCertificateStatusEnumType": { 6 | "type": "string", 7 | "additionalProperties": false, 8 | "enum": [ 9 | "Accepted", 10 | "Failed", 11 | "Rejected" 12 | ] 13 | } 14 | }, 15 | "type": "object", 16 | "additionalProperties": false, 17 | "properties": { 18 | "status": { 19 | "$ref": "#/definitions/InstallCertificateStatusEnumType" 20 | } 21 | }, 22 | "required": [ 23 | "status" 24 | ] 25 | } -------------------------------------------------------------------------------- /ocpp/v16/schemas/LogStatusNotification.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:1.6:2020:3:LogStatusNotification.req", 4 | "definitions": { 5 | "UploadLogStatusEnumType": { 6 | "type": "string", 7 | "additionalProperties": false, 8 | "enum": [ 9 | "BadMessage", 10 | "Idle", 11 | "NotSupportedOperation", 12 | "PermissionDenied", 13 | "Uploaded", 14 | "UploadFailure", 15 | "Uploading" 16 | ] 17 | } 18 | }, 19 | "type": "object", 20 | "additionalProperties": false, 21 | "properties": { 22 | "status": { 23 | "$ref": "#/definitions/UploadLogStatusEnumType" 24 | }, 25 | "requestId": { 26 | "type": "integer" 27 | } 28 | }, 29 | "required": [ 30 | "status" 31 | ] 32 | } -------------------------------------------------------------------------------- /ocpp/v16/schemas/LogStatusNotificationResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:1.6:2020:3:LogStatusNotification.conf", 4 | "type": "object", 5 | "additionalProperties": false 6 | } -------------------------------------------------------------------------------- /ocpp/v16/schemas/MeterValuesResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-04/schema#", 3 | "title": "MeterValuesResponse", 4 | "type": "object", 5 | "properties": {}, 6 | "additionalProperties": false 7 | } 8 | -------------------------------------------------------------------------------- /ocpp/v16/schemas/RemoteStartTransactionResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-04/schema#", 3 | "title": "RemoteStartTransactionResponse", 4 | "type": "object", 5 | "properties": { 6 | "status": { 7 | "type": "string", 8 | "additionalProperties": false, 9 | "enum": [ 10 | "Accepted", 11 | "Rejected" 12 | ] 13 | } 14 | }, 15 | "additionalProperties": false, 16 | "required": [ 17 | "status" 18 | ] 19 | } 20 | -------------------------------------------------------------------------------- /ocpp/v16/schemas/RemoteStopTransaction.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-04/schema#", 3 | "title": "RemoteStopTransactionRequest", 4 | "type": "object", 5 | "properties": { 6 | "transactionId": { 7 | "type": "integer" 8 | } 9 | }, 10 | "additionalProperties": false, 11 | "required": [ 12 | "transactionId" 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /ocpp/v16/schemas/RemoteStopTransactionResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-04/schema#", 3 | "title": "RemoteStopTransactionResponse", 4 | "type": "object", 5 | "properties": { 6 | "status": { 7 | "type": "string", 8 | "additionalProperties": false, 9 | "enum": [ 10 | "Accepted", 11 | "Rejected" 12 | ] 13 | } 14 | }, 15 | "additionalProperties": false, 16 | "required": [ 17 | "status" 18 | ] 19 | } 20 | -------------------------------------------------------------------------------- /ocpp/v16/schemas/ReserveNow.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-04/schema#", 3 | "title": "ReserveNowRequest", 4 | "type": "object", 5 | "properties": { 6 | "connectorId": { 7 | "type": "integer" 8 | }, 9 | "expiryDate": { 10 | "type": "string", 11 | "format": "date-time" 12 | }, 13 | "idTag": { 14 | "type": "string", 15 | "maxLength": 20 16 | }, 17 | "parentIdTag": { 18 | "type": "string", 19 | "maxLength": 20 20 | }, 21 | "reservationId": { 22 | "type": "integer" 23 | } 24 | }, 25 | "additionalProperties": false, 26 | "required": [ 27 | "connectorId", 28 | "expiryDate", 29 | "idTag", 30 | "reservationId" 31 | ] 32 | } 33 | -------------------------------------------------------------------------------- /ocpp/v16/schemas/ReserveNowResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-04/schema#", 3 | "title": "ReserveNowResponse", 4 | "type": "object", 5 | "properties": { 6 | "status": { 7 | "type": "string", 8 | "additionalProperties": false, 9 | "enum": [ 10 | "Accepted", 11 | "Faulted", 12 | "Occupied", 13 | "Rejected", 14 | "Unavailable" 15 | ] 16 | } 17 | }, 18 | "additionalProperties": false, 19 | "required": [ 20 | "status" 21 | ] 22 | } 23 | -------------------------------------------------------------------------------- /ocpp/v16/schemas/Reset.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-04/schema#", 3 | "title": "ResetRequest", 4 | "type": "object", 5 | "properties": { 6 | "type": { 7 | "type": "string", 8 | "additionalProperties": false, 9 | "enum": [ 10 | "Hard", 11 | "Soft" 12 | ] 13 | } 14 | }, 15 | "additionalProperties": false, 16 | "required": [ 17 | "type" 18 | ] 19 | } 20 | -------------------------------------------------------------------------------- /ocpp/v16/schemas/ResetResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-04/schema#", 3 | "title": "ResetResponse", 4 | "type": "object", 5 | "properties": { 6 | "status": { 7 | "type": "string", 8 | "additionalProperties": false, 9 | "enum": [ 10 | "Accepted", 11 | "Rejected" 12 | ] 13 | } 14 | }, 15 | "additionalProperties": false, 16 | "required": [ 17 | "status" 18 | ] 19 | } 20 | -------------------------------------------------------------------------------- /ocpp/v16/schemas/SecurityEventNotification.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:1.6:2020:3:SecurityEventNotification.req", 4 | "type": "object", 5 | "additionalProperties": false, 6 | "properties": { 7 | "type": { 8 | "type": "string", 9 | "maxLength": 50 10 | }, 11 | "timestamp": { 12 | "type": "string", 13 | "format": "date-time" 14 | }, 15 | "techInfo": { 16 | "type": "string", 17 | "maxLength": 255 18 | } 19 | }, 20 | "required": [ 21 | "type", 22 | "timestamp" 23 | ] 24 | } -------------------------------------------------------------------------------- /ocpp/v16/schemas/SecurityEventNotificationResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:1.6:2020:3:SecurityEventNotification.conf", 4 | "type": "object", 5 | "additionalProperties": false 6 | } -------------------------------------------------------------------------------- /ocpp/v16/schemas/SendLocalListResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-04/schema#", 3 | "title": "SendLocalListResponse", 4 | "type": "object", 5 | "properties": { 6 | "status": { 7 | "type": "string", 8 | "additionalProperties": false, 9 | "enum": [ 10 | "Accepted", 11 | "Failed", 12 | "NotSupported", 13 | "VersionMismatch" 14 | ] 15 | } 16 | }, 17 | "additionalProperties": false, 18 | "required": [ 19 | "status" 20 | ] 21 | } 22 | -------------------------------------------------------------------------------- /ocpp/v16/schemas/SetChargingProfileResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-04/schema#", 3 | "title": "SetChargingProfileResponse", 4 | "type": "object", 5 | "properties": { 6 | "status": { 7 | "type": "string", 8 | "additionalProperties": false, 9 | "enum": [ 10 | "Accepted", 11 | "Rejected", 12 | "NotSupported" 13 | ] 14 | } 15 | }, 16 | "additionalProperties": false, 17 | "required": [ 18 | "status" 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /ocpp/v16/schemas/SignCertificate.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:1.6:2020:3:SignCertificate.req", 4 | "type": "object", 5 | "additionalProperties": false, 6 | "properties": { 7 | "csr": { 8 | "type": "string", 9 | "maxLength": 5500 10 | } 11 | }, 12 | "required": [ 13 | "csr" 14 | ] 15 | } -------------------------------------------------------------------------------- /ocpp/v16/schemas/SignCertificateResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:1.6:2020:3:SignCertificate.conf", 4 | "definitions": { 5 | "GenericStatusEnumType": { 6 | "type": "string", 7 | "additionalProperties": false, 8 | "enum": [ 9 | "Accepted", 10 | "Rejected" 11 | ] 12 | } 13 | }, 14 | "type": "object", 15 | "additionalProperties": false, 16 | "properties": { 17 | "status": { 18 | "$ref": "#/definitions/GenericStatusEnumType" 19 | } 20 | }, 21 | "required": [ 22 | "status" 23 | ] 24 | } -------------------------------------------------------------------------------- /ocpp/v16/schemas/SignedFirmwareStatusNotification.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:1.6:2020:3:SignedFirmwareStatusNotification.req", 4 | "definitions": { 5 | "FirmwareStatusEnumType": { 6 | "type": "string", 7 | "additionalProperties": false, 8 | "enum": [ 9 | "Downloaded", 10 | "DownloadFailed", 11 | "Downloading", 12 | "DownloadScheduled", 13 | "DownloadPaused", 14 | "Idle", 15 | "InstallationFailed", 16 | "Installing", 17 | "Installed", 18 | "InstallRebooting", 19 | "InstallScheduled", 20 | "InstallVerificationFailed", 21 | "InvalidSignature", 22 | "SignatureVerified" 23 | ] 24 | } 25 | }, 26 | "type": "object", 27 | "additionalProperties": false, 28 | "properties": { 29 | "status": { 30 | "$ref": "#/definitions/FirmwareStatusEnumType" 31 | }, 32 | "requestId": { 33 | "type": "integer" 34 | } 35 | }, 36 | "required": [ 37 | "status" 38 | ] 39 | } -------------------------------------------------------------------------------- /ocpp/v16/schemas/SignedFirmwareStatusNotificationResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:1.6:2020:3:SignedFirmwareStatusNotification.conf", 4 | "type": "object", 5 | "additionalProperties": false 6 | } -------------------------------------------------------------------------------- /ocpp/v16/schemas/SignedUpdateFirmware.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:1.6:2020:3:SignedUpdateFirmware.req", 4 | "definitions": { 5 | "FirmwareType": { 6 | "type": "object", 7 | "additionalProperties": false, 8 | "properties": { 9 | "location": { 10 | "type": "string", 11 | "maxLength": 512 12 | }, 13 | "retrieveDateTime": { 14 | "type": "string", 15 | "format": "date-time" 16 | }, 17 | "installDateTime": { 18 | "type": "string", 19 | "format": "date-time" 20 | }, 21 | "signingCertificate": { 22 | "type": "string", 23 | "maxLength": 5500 24 | }, 25 | "signature": { 26 | "type": "string", 27 | "maxLength": 800 28 | } 29 | }, 30 | "required": [ 31 | "location", 32 | "retrieveDateTime", 33 | "signingCertificate", 34 | "signature" 35 | ] 36 | } 37 | }, 38 | "type": "object", 39 | "additionalProperties": false, 40 | "properties": { 41 | "retries": { 42 | "type": "integer" 43 | }, 44 | "retryInterval": { 45 | "type": "integer" 46 | }, 47 | "requestId": { 48 | "type": "integer" 49 | }, 50 | "firmware": { 51 | "$ref": "#/definitions/FirmwareType" 52 | } 53 | }, 54 | "required": [ 55 | "requestId", 56 | "firmware" 57 | ] 58 | } -------------------------------------------------------------------------------- /ocpp/v16/schemas/SignedUpdateFirmwareResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:1.6:2020:3:SignedUpdateFirmware.conf", 4 | "definitions": { 5 | "UpdateFirmwareStatusEnumType": { 6 | "type": "string", 7 | "additionalProperties": false, 8 | "enum": [ 9 | "Accepted", 10 | "Rejected", 11 | "AcceptedCanceled", 12 | "InvalidCertificate", 13 | "RevokedCertificate" 14 | ] 15 | } 16 | }, 17 | "type": "object", 18 | "additionalProperties": false, 19 | "properties": { 20 | "status": { 21 | "$ref": "#/definitions/UpdateFirmwareStatusEnumType" 22 | } 23 | }, 24 | "required": [ 25 | "status" 26 | ] 27 | } -------------------------------------------------------------------------------- /ocpp/v16/schemas/StartTransaction.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-04/schema#", 3 | "title": "StartTransactionRequest", 4 | "type": "object", 5 | "properties": { 6 | "connectorId": { 7 | "type": "integer" 8 | }, 9 | "idTag": { 10 | "type": "string", 11 | "maxLength": 20 12 | }, 13 | "meterStart": { 14 | "type": "integer" 15 | }, 16 | "reservationId": { 17 | "type": "integer" 18 | }, 19 | "timestamp": { 20 | "type": "string", 21 | "format": "date-time" 22 | } 23 | }, 24 | "additionalProperties": false, 25 | "required": [ 26 | "connectorId", 27 | "idTag", 28 | "meterStart", 29 | "timestamp" 30 | ] 31 | } 32 | -------------------------------------------------------------------------------- /ocpp/v16/schemas/StartTransactionResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-04/schema#", 3 | "title": "StartTransactionResponse", 4 | "type": "object", 5 | "properties": { 6 | "idTagInfo": { 7 | "type": "object", 8 | "properties": { 9 | "expiryDate": { 10 | "type": "string", 11 | "format": "date-time" 12 | }, 13 | "parentIdTag": { 14 | "type": "string", 15 | "maxLength": 20 16 | }, 17 | "status": { 18 | "type": "string", 19 | "additionalProperties": false, 20 | "enum": [ 21 | "Accepted", 22 | "Blocked", 23 | "Expired", 24 | "Invalid", 25 | "ConcurrentTx" 26 | ] 27 | } 28 | }, 29 | "additionalProperties": false, 30 | "required": [ 31 | "status" 32 | ] 33 | }, 34 | "transactionId": { 35 | "type": "integer" 36 | } 37 | }, 38 | "additionalProperties": false, 39 | "required": [ 40 | "idTagInfo", 41 | "transactionId" 42 | ] 43 | } 44 | -------------------------------------------------------------------------------- /ocpp/v16/schemas/StatusNotificationResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-04/schema#", 3 | "title": "StatusNotificationResponse", 4 | "type": "object", 5 | "properties": {}, 6 | "additionalProperties": false 7 | } 8 | -------------------------------------------------------------------------------- /ocpp/v16/schemas/StopTransactionResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-04/schema#", 3 | "title": "StopTransactionResponse", 4 | "type": "object", 5 | "properties": { 6 | "idTagInfo": { 7 | "type": "object", 8 | "properties": { 9 | "expiryDate": { 10 | "type": "string", 11 | "format": "date-time" 12 | }, 13 | "parentIdTag": { 14 | "type": "string", 15 | "maxLength": 20 16 | }, 17 | "status": { 18 | "type": "string", 19 | "additionalProperties": false, 20 | "enum": [ 21 | "Accepted", 22 | "Blocked", 23 | "Expired", 24 | "Invalid", 25 | "ConcurrentTx" 26 | ] 27 | } 28 | }, 29 | "additionalProperties": false, 30 | "required": [ 31 | "status" 32 | ] 33 | } 34 | }, 35 | "additionalProperties": false 36 | } 37 | -------------------------------------------------------------------------------- /ocpp/v16/schemas/TriggerMessage.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-04/schema#", 3 | "title": "TriggerMessageRequest", 4 | "type": "object", 5 | "properties": { 6 | "requestedMessage": { 7 | "type": "string", 8 | "additionalProperties": false, 9 | "enum": [ 10 | "BootNotification", 11 | "DiagnosticsStatusNotification", 12 | "FirmwareStatusNotification", 13 | "Heartbeat", 14 | "MeterValues", 15 | "StatusNotification" 16 | ] 17 | }, 18 | "connectorId": { 19 | "type": "integer" 20 | } 21 | }, 22 | "additionalProperties": false, 23 | "required": [ 24 | "requestedMessage" 25 | ] 26 | } 27 | -------------------------------------------------------------------------------- /ocpp/v16/schemas/TriggerMessageResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-04/schema#", 3 | "title": "TriggerMessageResponse", 4 | "type": "object", 5 | "properties": { 6 | "status": { 7 | "type": "string", 8 | "additionalProperties": false, 9 | "enum": [ 10 | "Accepted", 11 | "Rejected", 12 | "NotImplemented" 13 | ] 14 | } 15 | }, 16 | "additionalProperties": false, 17 | "required": [ 18 | "status" 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /ocpp/v16/schemas/UnlockConnector.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-04/schema#", 3 | "title": "UnlockConnectorRequest", 4 | "type": "object", 5 | "properties": { 6 | "connectorId": { 7 | "type": "integer" 8 | } 9 | }, 10 | "additionalProperties": false, 11 | "required": [ 12 | "connectorId" 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /ocpp/v16/schemas/UnlockConnectorResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-04/schema#", 3 | "title": "UnlockConnectorResponse", 4 | "type": "object", 5 | "properties": { 6 | "status": { 7 | "type": "string", 8 | "additionalProperties": false, 9 | "enum": [ 10 | "Unlocked", 11 | "UnlockFailed", 12 | "NotSupported" 13 | ] 14 | } 15 | }, 16 | "additionalProperties": false, 17 | "required": [ 18 | "status" 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /ocpp/v16/schemas/UpdateFirmware.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-04/schema#", 3 | "title": "UpdateFirmwareRequest", 4 | "type": "object", 5 | "properties": { 6 | "location": { 7 | "type": "string", 8 | "format": "uri" 9 | }, 10 | "retries": { 11 | "type": "integer" 12 | }, 13 | "retrieveDate": { 14 | "type": "string", 15 | "format": "date-time" 16 | }, 17 | "retryInterval": { 18 | "type": "integer" 19 | } 20 | }, 21 | "additionalProperties": false, 22 | "required": [ 23 | "location", 24 | "retrieveDate" 25 | ] 26 | } 27 | -------------------------------------------------------------------------------- /ocpp/v16/schemas/UpdateFirmwareResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-04/schema#", 3 | "title": "UpdateFirmwareResponse", 4 | "type": "object", 5 | "properties": {}, 6 | "additionalProperties": false 7 | } 8 | -------------------------------------------------------------------------------- /ocpp/v201/__init__.py: -------------------------------------------------------------------------------- 1 | from ocpp.charge_point import ChargePoint as cp 2 | from ocpp.v201 import call, call_result 3 | 4 | 5 | class ChargePoint(cp): 6 | _call = call 7 | _call_result = call_result 8 | _ocpp_version = "2.0.1" 9 | -------------------------------------------------------------------------------- /ocpp/v201/schemas/CancelReservationRequest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "comment": "OCPP 2.0.1 FINAL", 4 | "definitions": { 5 | "CustomDataType": { 6 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 7 | "javaType": "CustomData", 8 | "type": "object", 9 | "properties": { 10 | "vendorId": { 11 | "type": "string", 12 | "maxLength": 255 13 | } 14 | }, 15 | "required": [ 16 | "vendorId" 17 | ] 18 | } 19 | }, 20 | "type": "object", 21 | "additionalProperties": false, 22 | "properties": { 23 | "customData": { 24 | "$ref": "#/definitions/CustomDataType" 25 | }, 26 | "reservationId": { 27 | "description": "Id of the reservation to cancel.\r\n", 28 | "type": "integer" 29 | } 30 | }, 31 | "required": [ 32 | "reservationId" 33 | ] 34 | } -------------------------------------------------------------------------------- /ocpp/v201/schemas/ClearCacheRequest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "comment": "OCPP 2.0.1 FINAL", 4 | "definitions": { 5 | "CustomDataType": { 6 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 7 | "javaType": "CustomData", 8 | "type": "object", 9 | "properties": { 10 | "vendorId": { 11 | "type": "string", 12 | "maxLength": 255 13 | } 14 | }, 15 | "required": [ 16 | "vendorId" 17 | ] 18 | } 19 | }, 20 | "type": "object", 21 | "additionalProperties": false, 22 | "properties": { 23 | "customData": { 24 | "$ref": "#/definitions/CustomDataType" 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /ocpp/v201/schemas/ClearDisplayMessageRequest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "comment": "OCPP 2.0.1 FINAL", 4 | "definitions": { 5 | "CustomDataType": { 6 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 7 | "javaType": "CustomData", 8 | "type": "object", 9 | "properties": { 10 | "vendorId": { 11 | "type": "string", 12 | "maxLength": 255 13 | } 14 | }, 15 | "required": [ 16 | "vendorId" 17 | ] 18 | } 19 | }, 20 | "type": "object", 21 | "additionalProperties": false, 22 | "properties": { 23 | "customData": { 24 | "$ref": "#/definitions/CustomDataType" 25 | }, 26 | "id": { 27 | "description": "Id of the message that SHALL be removed from the Charging Station.\r\n", 28 | "type": "integer" 29 | } 30 | }, 31 | "required": [ 32 | "id" 33 | ] 34 | } -------------------------------------------------------------------------------- /ocpp/v201/schemas/ClearVariableMonitoringRequest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "comment": "OCPP 2.0.1 FINAL", 4 | "definitions": { 5 | "CustomDataType": { 6 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 7 | "javaType": "CustomData", 8 | "type": "object", 9 | "properties": { 10 | "vendorId": { 11 | "type": "string", 12 | "maxLength": 255 13 | } 14 | }, 15 | "required": [ 16 | "vendorId" 17 | ] 18 | } 19 | }, 20 | "type": "object", 21 | "additionalProperties": false, 22 | "properties": { 23 | "customData": { 24 | "$ref": "#/definitions/CustomDataType" 25 | }, 26 | "id": { 27 | "description": "List of the monitors to be cleared, identified by there Id.\r\n", 28 | "type": "array", 29 | "additionalItems": false, 30 | "items": { 31 | "type": "integer" 32 | }, 33 | "minItems": 1 34 | } 35 | }, 36 | "required": [ 37 | "id" 38 | ] 39 | } -------------------------------------------------------------------------------- /ocpp/v201/schemas/ClearedChargingLimitRequest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "comment": "OCPP 2.0.1 FINAL", 4 | "definitions": { 5 | "CustomDataType": { 6 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 7 | "javaType": "CustomData", 8 | "type": "object", 9 | "properties": { 10 | "vendorId": { 11 | "type": "string", 12 | "maxLength": 255 13 | } 14 | }, 15 | "required": [ 16 | "vendorId" 17 | ] 18 | }, 19 | "ChargingLimitSourceEnumType": { 20 | "description": "Source of the charging limit.\r\n", 21 | "javaType": "ChargingLimitSourceEnum", 22 | "type": "string", 23 | "additionalProperties": false, 24 | "enum": [ 25 | "EMS", 26 | "Other", 27 | "SO", 28 | "CSO" 29 | ] 30 | } 31 | }, 32 | "type": "object", 33 | "additionalProperties": false, 34 | "properties": { 35 | "customData": { 36 | "$ref": "#/definitions/CustomDataType" 37 | }, 38 | "chargingLimitSource": { 39 | "$ref": "#/definitions/ChargingLimitSourceEnumType" 40 | }, 41 | "evseId": { 42 | "description": "EVSE Identifier.\r\n", 43 | "type": "integer" 44 | } 45 | }, 46 | "required": [ 47 | "chargingLimitSource" 48 | ] 49 | } -------------------------------------------------------------------------------- /ocpp/v201/schemas/ClearedChargingLimitResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "comment": "OCPP 2.0.1 FINAL", 4 | "definitions": { 5 | "CustomDataType": { 6 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 7 | "javaType": "CustomData", 8 | "type": "object", 9 | "properties": { 10 | "vendorId": { 11 | "type": "string", 12 | "maxLength": 255 13 | } 14 | }, 15 | "required": [ 16 | "vendorId" 17 | ] 18 | } 19 | }, 20 | "type": "object", 21 | "additionalProperties": false, 22 | "properties": { 23 | "customData": { 24 | "$ref": "#/definitions/CustomDataType" 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /ocpp/v201/schemas/CostUpdatedRequest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "comment": "OCPP 2.0.1 FINAL", 4 | "definitions": { 5 | "CustomDataType": { 6 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 7 | "javaType": "CustomData", 8 | "type": "object", 9 | "properties": { 10 | "vendorId": { 11 | "type": "string", 12 | "maxLength": 255 13 | } 14 | }, 15 | "required": [ 16 | "vendorId" 17 | ] 18 | } 19 | }, 20 | "type": "object", 21 | "additionalProperties": false, 22 | "properties": { 23 | "customData": { 24 | "$ref": "#/definitions/CustomDataType" 25 | }, 26 | "totalCost": { 27 | "description": "Current total cost, based on the information known by the CSMS, of the transaction including taxes. In the currency configured with the configuration Variable: [<<configkey-currency, Currency>>]\r\n\r\n", 28 | "type": "number" 29 | }, 30 | "transactionId": { 31 | "description": "Transaction Id of the transaction the current cost are asked for.\r\n\r\n", 32 | "type": "string", 33 | "maxLength": 36 34 | } 35 | }, 36 | "required": [ 37 | "totalCost", 38 | "transactionId" 39 | ] 40 | } -------------------------------------------------------------------------------- /ocpp/v201/schemas/CostUpdatedResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "comment": "OCPP 2.0.1 FINAL", 4 | "definitions": { 5 | "CustomDataType": { 6 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 7 | "javaType": "CustomData", 8 | "type": "object", 9 | "properties": { 10 | "vendorId": { 11 | "type": "string", 12 | "maxLength": 255 13 | } 14 | }, 15 | "required": [ 16 | "vendorId" 17 | ] 18 | } 19 | }, 20 | "type": "object", 21 | "additionalProperties": false, 22 | "properties": { 23 | "customData": { 24 | "$ref": "#/definitions/CustomDataType" 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /ocpp/v201/schemas/DataTransferRequest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "comment": "OCPP 2.0.1 FINAL", 4 | "definitions": { 5 | "CustomDataType": { 6 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 7 | "javaType": "CustomData", 8 | "type": "object", 9 | "properties": { 10 | "vendorId": { 11 | "type": "string", 12 | "maxLength": 255 13 | } 14 | }, 15 | "required": [ 16 | "vendorId" 17 | ] 18 | } 19 | }, 20 | "type": "object", 21 | "additionalProperties": false, 22 | "properties": { 23 | "customData": { 24 | "$ref": "#/definitions/CustomDataType" 25 | }, 26 | "messageId": { 27 | "description": "May be used to indicate a specific message or implementation.\r\n", 28 | "type": "string", 29 | "maxLength": 50 30 | }, 31 | "data": { 32 | "description": "Data without specified length or format. This needs to be decided by both parties (Open to implementation).\r\n" 33 | }, 34 | "vendorId": { 35 | "description": "This identifies the Vendor specific implementation\r\n\r\n", 36 | "type": "string", 37 | "maxLength": 255 38 | } 39 | }, 40 | "required": [ 41 | "vendorId" 42 | ] 43 | } -------------------------------------------------------------------------------- /ocpp/v201/schemas/FirmwareStatusNotificationRequest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "comment": "OCPP 2.0.1 FINAL", 4 | "definitions": { 5 | "CustomDataType": { 6 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 7 | "javaType": "CustomData", 8 | "type": "object", 9 | "properties": { 10 | "vendorId": { 11 | "type": "string", 12 | "maxLength": 255 13 | } 14 | }, 15 | "required": [ 16 | "vendorId" 17 | ] 18 | }, 19 | "FirmwareStatusEnumType": { 20 | "description": "This contains the progress status of the firmware installation.\r\n", 21 | "javaType": "FirmwareStatusEnum", 22 | "type": "string", 23 | "additionalProperties": false, 24 | "enum": [ 25 | "Downloaded", 26 | "DownloadFailed", 27 | "Downloading", 28 | "DownloadScheduled", 29 | "DownloadPaused", 30 | "Idle", 31 | "InstallationFailed", 32 | "Installing", 33 | "Installed", 34 | "InstallRebooting", 35 | "InstallScheduled", 36 | "InstallVerificationFailed", 37 | "InvalidSignature", 38 | "SignatureVerified" 39 | ] 40 | } 41 | }, 42 | "type": "object", 43 | "additionalProperties": false, 44 | "properties": { 45 | "customData": { 46 | "$ref": "#/definitions/CustomDataType" 47 | }, 48 | "status": { 49 | "$ref": "#/definitions/FirmwareStatusEnumType" 50 | }, 51 | "requestId": { 52 | "description": "The request id that was provided in the\r\nUpdateFirmwareRequest that started this firmware update.\r\nThis field is mandatory, unless the message was triggered by a TriggerMessageRequest AND there is no firmware update ongoing.\r\n", 53 | "type": "integer" 54 | } 55 | }, 56 | "required": [ 57 | "status" 58 | ] 59 | } -------------------------------------------------------------------------------- /ocpp/v201/schemas/FirmwareStatusNotificationResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "comment": "OCPP 2.0.1 FINAL", 4 | "definitions": { 5 | "CustomDataType": { 6 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 7 | "javaType": "CustomData", 8 | "type": "object", 9 | "properties": { 10 | "vendorId": { 11 | "type": "string", 12 | "maxLength": 255 13 | } 14 | }, 15 | "required": [ 16 | "vendorId" 17 | ] 18 | } 19 | }, 20 | "type": "object", 21 | "additionalProperties": false, 22 | "properties": { 23 | "customData": { 24 | "$ref": "#/definitions/CustomDataType" 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /ocpp/v201/schemas/Get15118EVCertificateRequest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "comment": "OCPP 2.0.1 FINAL", 4 | "definitions": { 5 | "CustomDataType": { 6 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 7 | "javaType": "CustomData", 8 | "type": "object", 9 | "properties": { 10 | "vendorId": { 11 | "type": "string", 12 | "maxLength": 255 13 | } 14 | }, 15 | "required": [ 16 | "vendorId" 17 | ] 18 | }, 19 | "CertificateActionEnumType": { 20 | "description": "Defines whether certificate needs to be installed or updated.\r\n", 21 | "javaType": "CertificateActionEnum", 22 | "type": "string", 23 | "additionalProperties": false, 24 | "enum": [ 25 | "Install", 26 | "Update" 27 | ] 28 | } 29 | }, 30 | "type": "object", 31 | "additionalProperties": false, 32 | "properties": { 33 | "customData": { 34 | "$ref": "#/definitions/CustomDataType" 35 | }, 36 | "iso15118SchemaVersion": { 37 | "description": "Schema version currently used for the 15118 session between EV and Charging Station. Needed for parsing of the EXI stream by the CSMS.\r\n\r\n", 38 | "type": "string", 39 | "maxLength": 50 40 | }, 41 | "action": { 42 | "$ref": "#/definitions/CertificateActionEnumType" 43 | }, 44 | "exiRequest": { 45 | "description": "Raw CertificateInstallationReq request from EV, Base64 encoded.\r\n", 46 | "type": "string", 47 | "maxLength": 5600 48 | } 49 | }, 50 | "required": [ 51 | "iso15118SchemaVersion", 52 | "action", 53 | "exiRequest" 54 | ] 55 | } -------------------------------------------------------------------------------- /ocpp/v201/schemas/GetBaseReportRequest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "comment": "OCPP 2.0.1 FINAL", 4 | "definitions": { 5 | "CustomDataType": { 6 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 7 | "javaType": "CustomData", 8 | "type": "object", 9 | "properties": { 10 | "vendorId": { 11 | "type": "string", 12 | "maxLength": 255 13 | } 14 | }, 15 | "required": [ 16 | "vendorId" 17 | ] 18 | }, 19 | "ReportBaseEnumType": { 20 | "description": "This field specifies the report base.\r\n", 21 | "javaType": "ReportBaseEnum", 22 | "type": "string", 23 | "additionalProperties": false, 24 | "enum": [ 25 | "ConfigurationInventory", 26 | "FullInventory", 27 | "SummaryInventory" 28 | ] 29 | } 30 | }, 31 | "type": "object", 32 | "additionalProperties": false, 33 | "properties": { 34 | "customData": { 35 | "$ref": "#/definitions/CustomDataType" 36 | }, 37 | "requestId": { 38 | "description": "The Id of the request.\r\n", 39 | "type": "integer" 40 | }, 41 | "reportBase": { 42 | "$ref": "#/definitions/ReportBaseEnumType" 43 | } 44 | }, 45 | "required": [ 46 | "requestId", 47 | "reportBase" 48 | ] 49 | } -------------------------------------------------------------------------------- /ocpp/v201/schemas/GetCompositeScheduleRequest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "comment": "OCPP 2.0.1 FINAL", 4 | "definitions": { 5 | "CustomDataType": { 6 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 7 | "javaType": "CustomData", 8 | "type": "object", 9 | "properties": { 10 | "vendorId": { 11 | "type": "string", 12 | "maxLength": 255 13 | } 14 | }, 15 | "required": [ 16 | "vendorId" 17 | ] 18 | }, 19 | "ChargingRateUnitEnumType": { 20 | "description": "Can be used to force a power or current profile.\r\n\r\n", 21 | "javaType": "ChargingRateUnitEnum", 22 | "type": "string", 23 | "additionalProperties": false, 24 | "enum": [ 25 | "W", 26 | "A" 27 | ] 28 | } 29 | }, 30 | "type": "object", 31 | "additionalProperties": false, 32 | "properties": { 33 | "customData": { 34 | "$ref": "#/definitions/CustomDataType" 35 | }, 36 | "duration": { 37 | "description": "Length of the requested schedule in seconds.\r\n\r\n", 38 | "type": "integer" 39 | }, 40 | "chargingRateUnit": { 41 | "$ref": "#/definitions/ChargingRateUnitEnumType" 42 | }, 43 | "evseId": { 44 | "description": "The ID of the EVSE for which the schedule is requested. When evseid=0, the Charging Station will calculate the expected consumption for the grid connection.\r\n", 45 | "type": "integer" 46 | } 47 | }, 48 | "required": [ 49 | "duration", 50 | "evseId" 51 | ] 52 | } -------------------------------------------------------------------------------- /ocpp/v201/schemas/GetInstalledCertificateIdsRequest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "comment": "OCPP 2.0.1 FINAL", 4 | "definitions": { 5 | "CustomDataType": { 6 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 7 | "javaType": "CustomData", 8 | "type": "object", 9 | "properties": { 10 | "vendorId": { 11 | "type": "string", 12 | "maxLength": 255 13 | } 14 | }, 15 | "required": [ 16 | "vendorId" 17 | ] 18 | }, 19 | "GetCertificateIdUseEnumType": { 20 | "javaType": "GetCertificateIdUseEnum", 21 | "type": "string", 22 | "additionalProperties": false, 23 | "enum": [ 24 | "V2GRootCertificate", 25 | "MORootCertificate", 26 | "CSMSRootCertificate", 27 | "V2GCertificateChain", 28 | "ManufacturerRootCertificate" 29 | ] 30 | } 31 | }, 32 | "type": "object", 33 | "additionalProperties": false, 34 | "properties": { 35 | "customData": { 36 | "$ref": "#/definitions/CustomDataType" 37 | }, 38 | "certificateType": { 39 | "description": "Indicates the type of certificates requested. When omitted, all certificate types are requested.\r\n", 40 | "type": "array", 41 | "additionalItems": false, 42 | "items": { 43 | "$ref": "#/definitions/GetCertificateIdUseEnumType" 44 | }, 45 | "minItems": 1 46 | } 47 | } 48 | } -------------------------------------------------------------------------------- /ocpp/v201/schemas/GetLocalListVersionRequest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "comment": "OCPP 2.0.1 FINAL", 4 | "definitions": { 5 | "CustomDataType": { 6 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 7 | "javaType": "CustomData", 8 | "type": "object", 9 | "properties": { 10 | "vendorId": { 11 | "type": "string", 12 | "maxLength": 255 13 | } 14 | }, 15 | "required": [ 16 | "vendorId" 17 | ] 18 | } 19 | }, 20 | "type": "object", 21 | "additionalProperties": false, 22 | "properties": { 23 | "customData": { 24 | "$ref": "#/definitions/CustomDataType" 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /ocpp/v201/schemas/GetLocalListVersionResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "comment": "OCPP 2.0.1 FINAL", 4 | "definitions": { 5 | "CustomDataType": { 6 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 7 | "javaType": "CustomData", 8 | "type": "object", 9 | "properties": { 10 | "vendorId": { 11 | "type": "string", 12 | "maxLength": 255 13 | } 14 | }, 15 | "required": [ 16 | "vendorId" 17 | ] 18 | } 19 | }, 20 | "type": "object", 21 | "additionalProperties": false, 22 | "properties": { 23 | "customData": { 24 | "$ref": "#/definitions/CustomDataType" 25 | }, 26 | "versionNumber": { 27 | "description": "This contains the current version number of the local authorization list in the Charging Station.\r\n", 28 | "type": "integer" 29 | } 30 | }, 31 | "required": [ 32 | "versionNumber" 33 | ] 34 | } -------------------------------------------------------------------------------- /ocpp/v201/schemas/GetTransactionStatusRequest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "comment": "OCPP 2.0.1 FINAL", 4 | "definitions": { 5 | "CustomDataType": { 6 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 7 | "javaType": "CustomData", 8 | "type": "object", 9 | "properties": { 10 | "vendorId": { 11 | "type": "string", 12 | "maxLength": 255 13 | } 14 | }, 15 | "required": [ 16 | "vendorId" 17 | ] 18 | } 19 | }, 20 | "type": "object", 21 | "additionalProperties": false, 22 | "properties": { 23 | "customData": { 24 | "$ref": "#/definitions/CustomDataType" 25 | }, 26 | "transactionId": { 27 | "description": "The Id of the transaction for which the status is requested.\r\n", 28 | "type": "string", 29 | "maxLength": 36 30 | } 31 | } 32 | } -------------------------------------------------------------------------------- /ocpp/v201/schemas/GetTransactionStatusResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "comment": "OCPP 2.0.1 FINAL", 4 | "definitions": { 5 | "CustomDataType": { 6 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 7 | "javaType": "CustomData", 8 | "type": "object", 9 | "properties": { 10 | "vendorId": { 11 | "type": "string", 12 | "maxLength": 255 13 | } 14 | }, 15 | "required": [ 16 | "vendorId" 17 | ] 18 | } 19 | }, 20 | "type": "object", 21 | "additionalProperties": false, 22 | "properties": { 23 | "customData": { 24 | "$ref": "#/definitions/CustomDataType" 25 | }, 26 | "ongoingIndicator": { 27 | "description": "Whether the transaction is still ongoing.\r\n", 28 | "type": "boolean" 29 | }, 30 | "messagesInQueue": { 31 | "description": "Whether there are still message to be delivered.\r\n", 32 | "type": "boolean" 33 | } 34 | }, 35 | "required": [ 36 | "messagesInQueue" 37 | ] 38 | } -------------------------------------------------------------------------------- /ocpp/v201/schemas/HeartbeatRequest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "comment": "OCPP 2.0.1 FINAL", 4 | "definitions": { 5 | "CustomDataType": { 6 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 7 | "javaType": "CustomData", 8 | "type": "object", 9 | "properties": { 10 | "vendorId": { 11 | "type": "string", 12 | "maxLength": 255 13 | } 14 | }, 15 | "required": [ 16 | "vendorId" 17 | ] 18 | } 19 | }, 20 | "type": "object", 21 | "additionalProperties": false, 22 | "properties": { 23 | "customData": { 24 | "$ref": "#/definitions/CustomDataType" 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /ocpp/v201/schemas/HeartbeatResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "comment": "OCPP 2.0.1 FINAL", 4 | "definitions": { 5 | "CustomDataType": { 6 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 7 | "javaType": "CustomData", 8 | "type": "object", 9 | "properties": { 10 | "vendorId": { 11 | "type": "string", 12 | "maxLength": 255 13 | } 14 | }, 15 | "required": [ 16 | "vendorId" 17 | ] 18 | } 19 | }, 20 | "type": "object", 21 | "additionalProperties": false, 22 | "properties": { 23 | "customData": { 24 | "$ref": "#/definitions/CustomDataType" 25 | }, 26 | "currentTime": { 27 | "description": "Contains the current time of the CSMS.\r\n", 28 | "type": "string", 29 | "format": "date-time" 30 | } 31 | }, 32 | "required": [ 33 | "currentTime" 34 | ] 35 | } -------------------------------------------------------------------------------- /ocpp/v201/schemas/InstallCertificateRequest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "comment": "OCPP 2.0.1 FINAL", 4 | "definitions": { 5 | "CustomDataType": { 6 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 7 | "javaType": "CustomData", 8 | "type": "object", 9 | "properties": { 10 | "vendorId": { 11 | "type": "string", 12 | "maxLength": 255 13 | } 14 | }, 15 | "required": [ 16 | "vendorId" 17 | ] 18 | }, 19 | "InstallCertificateUseEnumType": { 20 | "description": "Indicates the certificate type that is sent.\r\n", 21 | "javaType": "InstallCertificateUseEnum", 22 | "type": "string", 23 | "additionalProperties": false, 24 | "enum": [ 25 | "V2GRootCertificate", 26 | "MORootCertificate", 27 | "CSMSRootCertificate", 28 | "ManufacturerRootCertificate" 29 | ] 30 | } 31 | }, 32 | "type": "object", 33 | "additionalProperties": false, 34 | "properties": { 35 | "customData": { 36 | "$ref": "#/definitions/CustomDataType" 37 | }, 38 | "certificateType": { 39 | "$ref": "#/definitions/InstallCertificateUseEnumType" 40 | }, 41 | "certificate": { 42 | "description": "A PEM encoded X.509 certificate.\r\n", 43 | "type": "string", 44 | "maxLength": 5500 45 | } 46 | }, 47 | "required": [ 48 | "certificateType", 49 | "certificate" 50 | ] 51 | } -------------------------------------------------------------------------------- /ocpp/v201/schemas/LogStatusNotificationRequest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "comment": "OCPP 2.0.1 FINAL", 4 | "definitions": { 5 | "CustomDataType": { 6 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 7 | "javaType": "CustomData", 8 | "type": "object", 9 | "properties": { 10 | "vendorId": { 11 | "type": "string", 12 | "maxLength": 255 13 | } 14 | }, 15 | "required": [ 16 | "vendorId" 17 | ] 18 | }, 19 | "UploadLogStatusEnumType": { 20 | "description": "This contains the status of the log upload.\r\n", 21 | "javaType": "UploadLogStatusEnum", 22 | "type": "string", 23 | "additionalProperties": false, 24 | "enum": [ 25 | "BadMessage", 26 | "Idle", 27 | "NotSupportedOperation", 28 | "PermissionDenied", 29 | "Uploaded", 30 | "UploadFailure", 31 | "Uploading", 32 | "AcceptedCanceled" 33 | ] 34 | } 35 | }, 36 | "type": "object", 37 | "additionalProperties": false, 38 | "properties": { 39 | "customData": { 40 | "$ref": "#/definitions/CustomDataType" 41 | }, 42 | "status": { 43 | "$ref": "#/definitions/UploadLogStatusEnumType" 44 | }, 45 | "requestId": { 46 | "description": "The request id that was provided in GetLogRequest that started this log upload. This field is mandatory,\r\nunless the message was triggered by a TriggerMessageRequest AND there is no log upload ongoing.\r\n", 47 | "type": "integer" 48 | } 49 | }, 50 | "required": [ 51 | "status" 52 | ] 53 | } -------------------------------------------------------------------------------- /ocpp/v201/schemas/LogStatusNotificationResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "comment": "OCPP 2.0.1 FINAL", 4 | "definitions": { 5 | "CustomDataType": { 6 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 7 | "javaType": "CustomData", 8 | "type": "object", 9 | "properties": { 10 | "vendorId": { 11 | "type": "string", 12 | "maxLength": 255 13 | } 14 | }, 15 | "required": [ 16 | "vendorId" 17 | ] 18 | } 19 | }, 20 | "type": "object", 21 | "additionalProperties": false, 22 | "properties": { 23 | "customData": { 24 | "$ref": "#/definitions/CustomDataType" 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /ocpp/v201/schemas/MeterValuesResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "comment": "OCPP 2.0.1 FINAL", 4 | "definitions": { 5 | "CustomDataType": { 6 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 7 | "javaType": "CustomData", 8 | "type": "object", 9 | "properties": { 10 | "vendorId": { 11 | "type": "string", 12 | "maxLength": 255 13 | } 14 | }, 15 | "required": [ 16 | "vendorId" 17 | ] 18 | } 19 | }, 20 | "type": "object", 21 | "additionalProperties": false, 22 | "properties": { 23 | "customData": { 24 | "$ref": "#/definitions/CustomDataType" 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /ocpp/v201/schemas/NotifyChargingLimitResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "comment": "OCPP 2.0.1 FINAL", 4 | "definitions": { 5 | "CustomDataType": { 6 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 7 | "javaType": "CustomData", 8 | "type": "object", 9 | "properties": { 10 | "vendorId": { 11 | "type": "string", 12 | "maxLength": 255 13 | } 14 | }, 15 | "required": [ 16 | "vendorId" 17 | ] 18 | } 19 | }, 20 | "type": "object", 21 | "additionalProperties": false, 22 | "properties": { 23 | "customData": { 24 | "$ref": "#/definitions/CustomDataType" 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /ocpp/v201/schemas/NotifyCustomerInformationRequest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "comment": "OCPP 2.0.1 FINAL", 4 | "definitions": { 5 | "CustomDataType": { 6 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 7 | "javaType": "CustomData", 8 | "type": "object", 9 | "properties": { 10 | "vendorId": { 11 | "type": "string", 12 | "maxLength": 255 13 | } 14 | }, 15 | "required": [ 16 | "vendorId" 17 | ] 18 | } 19 | }, 20 | "type": "object", 21 | "additionalProperties": false, 22 | "properties": { 23 | "customData": { 24 | "$ref": "#/definitions/CustomDataType" 25 | }, 26 | "data": { 27 | "description": "(Part of) the requested data. No format specified in which the data is returned. Should be human readable.\r\n", 28 | "type": "string", 29 | "maxLength": 512 30 | }, 31 | "tbc": { 32 | "description": "“to be continued” indicator. Indicates whether another part of the monitoringData follows in an upcoming notifyMonitoringReportRequest message. Default value when omitted is false.\r\n", 33 | "type": "boolean", 34 | "default": false 35 | }, 36 | "seqNo": { 37 | "description": "Sequence number of this message. First message starts at 0.\r\n", 38 | "type": "integer" 39 | }, 40 | "generatedAt": { 41 | "description": " Timestamp of the moment this message was generated at the Charging Station.\r\n", 42 | "type": "string", 43 | "format": "date-time" 44 | }, 45 | "requestId": { 46 | "description": "The Id of the request.\r\n\r\n", 47 | "type": "integer" 48 | } 49 | }, 50 | "required": [ 51 | "data", 52 | "seqNo", 53 | "generatedAt", 54 | "requestId" 55 | ] 56 | } -------------------------------------------------------------------------------- /ocpp/v201/schemas/NotifyCustomerInformationResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "comment": "OCPP 2.0.1 FINAL", 4 | "definitions": { 5 | "CustomDataType": { 6 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 7 | "javaType": "CustomData", 8 | "type": "object", 9 | "properties": { 10 | "vendorId": { 11 | "type": "string", 12 | "maxLength": 255 13 | } 14 | }, 15 | "required": [ 16 | "vendorId" 17 | ] 18 | } 19 | }, 20 | "type": "object", 21 | "additionalProperties": false, 22 | "properties": { 23 | "customData": { 24 | "$ref": "#/definitions/CustomDataType" 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /ocpp/v201/schemas/NotifyDisplayMessagesResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "comment": "OCPP 2.0.1 FINAL", 4 | "definitions": { 5 | "CustomDataType": { 6 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 7 | "javaType": "CustomData", 8 | "type": "object", 9 | "properties": { 10 | "vendorId": { 11 | "type": "string", 12 | "maxLength": 255 13 | } 14 | }, 15 | "required": [ 16 | "vendorId" 17 | ] 18 | } 19 | }, 20 | "type": "object", 21 | "additionalProperties": false, 22 | "properties": { 23 | "customData": { 24 | "$ref": "#/definitions/CustomDataType" 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /ocpp/v201/schemas/NotifyEventResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "comment": "OCPP 2.0.1 FINAL", 4 | "definitions": { 5 | "CustomDataType": { 6 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 7 | "javaType": "CustomData", 8 | "type": "object", 9 | "properties": { 10 | "vendorId": { 11 | "type": "string", 12 | "maxLength": 255 13 | } 14 | }, 15 | "required": [ 16 | "vendorId" 17 | ] 18 | } 19 | }, 20 | "type": "object", 21 | "additionalProperties": false, 22 | "properties": { 23 | "customData": { 24 | "$ref": "#/definitions/CustomDataType" 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /ocpp/v201/schemas/NotifyMonitoringReportResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "comment": "OCPP 2.0.1 FINAL", 4 | "definitions": { 5 | "CustomDataType": { 6 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 7 | "javaType": "CustomData", 8 | "type": "object", 9 | "properties": { 10 | "vendorId": { 11 | "type": "string", 12 | "maxLength": 255 13 | } 14 | }, 15 | "required": [ 16 | "vendorId" 17 | ] 18 | } 19 | }, 20 | "type": "object", 21 | "additionalProperties": false, 22 | "properties": { 23 | "customData": { 24 | "$ref": "#/definitions/CustomDataType" 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /ocpp/v201/schemas/NotifyReportResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "comment": "OCPP 2.0.1 FINAL", 4 | "definitions": { 5 | "CustomDataType": { 6 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 7 | "javaType": "CustomData", 8 | "type": "object", 9 | "properties": { 10 | "vendorId": { 11 | "type": "string", 12 | "maxLength": 255 13 | } 14 | }, 15 | "required": [ 16 | "vendorId" 17 | ] 18 | } 19 | }, 20 | "type": "object", 21 | "additionalProperties": false, 22 | "properties": { 23 | "customData": { 24 | "$ref": "#/definitions/CustomDataType" 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /ocpp/v201/schemas/PublishFirmwareStatusNotificationResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "comment": "OCPP 2.0.1 FINAL", 4 | "definitions": { 5 | "CustomDataType": { 6 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 7 | "javaType": "CustomData", 8 | "type": "object", 9 | "properties": { 10 | "vendorId": { 11 | "type": "string", 12 | "maxLength": 255 13 | } 14 | }, 15 | "required": [ 16 | "vendorId" 17 | ] 18 | } 19 | }, 20 | "type": "object", 21 | "additionalProperties": false, 22 | "properties": { 23 | "customData": { 24 | "$ref": "#/definitions/CustomDataType" 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /ocpp/v201/schemas/ReportChargingProfilesResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "comment": "OCPP 2.0.1 FINAL", 4 | "definitions": { 5 | "CustomDataType": { 6 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 7 | "javaType": "CustomData", 8 | "type": "object", 9 | "properties": { 10 | "vendorId": { 11 | "type": "string", 12 | "maxLength": 255 13 | } 14 | }, 15 | "required": [ 16 | "vendorId" 17 | ] 18 | } 19 | }, 20 | "type": "object", 21 | "additionalProperties": false, 22 | "properties": { 23 | "customData": { 24 | "$ref": "#/definitions/CustomDataType" 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /ocpp/v201/schemas/RequestStopTransactionRequest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "comment": "OCPP 2.0.1 FINAL", 4 | "definitions": { 5 | "CustomDataType": { 6 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 7 | "javaType": "CustomData", 8 | "type": "object", 9 | "properties": { 10 | "vendorId": { 11 | "type": "string", 12 | "maxLength": 255 13 | } 14 | }, 15 | "required": [ 16 | "vendorId" 17 | ] 18 | } 19 | }, 20 | "type": "object", 21 | "additionalProperties": false, 22 | "properties": { 23 | "customData": { 24 | "$ref": "#/definitions/CustomDataType" 25 | }, 26 | "transactionId": { 27 | "description": "The identifier of the transaction which the Charging Station is requested to stop.\r\n", 28 | "type": "string", 29 | "maxLength": 36 30 | } 31 | }, 32 | "required": [ 33 | "transactionId" 34 | ] 35 | } -------------------------------------------------------------------------------- /ocpp/v201/schemas/ReservationStatusUpdateRequest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "comment": "OCPP 2.0.1 FINAL", 4 | "definitions": { 5 | "CustomDataType": { 6 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 7 | "javaType": "CustomData", 8 | "type": "object", 9 | "properties": { 10 | "vendorId": { 11 | "type": "string", 12 | "maxLength": 255 13 | } 14 | }, 15 | "required": [ 16 | "vendorId" 17 | ] 18 | }, 19 | "ReservationUpdateStatusEnumType": { 20 | "description": "The updated reservation status.\r\n", 21 | "javaType": "ReservationUpdateStatusEnum", 22 | "type": "string", 23 | "additionalProperties": false, 24 | "enum": [ 25 | "Expired", 26 | "Removed" 27 | ] 28 | } 29 | }, 30 | "type": "object", 31 | "additionalProperties": false, 32 | "properties": { 33 | "customData": { 34 | "$ref": "#/definitions/CustomDataType" 35 | }, 36 | "reservationId": { 37 | "description": "The ID of the reservation.\r\n", 38 | "type": "integer" 39 | }, 40 | "reservationUpdateStatus": { 41 | "$ref": "#/definitions/ReservationUpdateStatusEnumType" 42 | } 43 | }, 44 | "required": [ 45 | "reservationId", 46 | "reservationUpdateStatus" 47 | ] 48 | } -------------------------------------------------------------------------------- /ocpp/v201/schemas/ReservationStatusUpdateResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "comment": "OCPP 2.0.1 FINAL", 4 | "definitions": { 5 | "CustomDataType": { 6 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 7 | "javaType": "CustomData", 8 | "type": "object", 9 | "properties": { 10 | "vendorId": { 11 | "type": "string", 12 | "maxLength": 255 13 | } 14 | }, 15 | "required": [ 16 | "vendorId" 17 | ] 18 | } 19 | }, 20 | "type": "object", 21 | "additionalProperties": false, 22 | "properties": { 23 | "customData": { 24 | "$ref": "#/definitions/CustomDataType" 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /ocpp/v201/schemas/ResetRequest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "comment": "OCPP 2.0.1 FINAL", 4 | "definitions": { 5 | "CustomDataType": { 6 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 7 | "javaType": "CustomData", 8 | "type": "object", 9 | "properties": { 10 | "vendorId": { 11 | "type": "string", 12 | "maxLength": 255 13 | } 14 | }, 15 | "required": [ 16 | "vendorId" 17 | ] 18 | }, 19 | "ResetEnumType": { 20 | "description": "This contains the type of reset that the Charging Station or EVSE should perform.\r\n", 21 | "javaType": "ResetEnum", 22 | "type": "string", 23 | "additionalProperties": false, 24 | "enum": [ 25 | "Immediate", 26 | "OnIdle" 27 | ] 28 | } 29 | }, 30 | "type": "object", 31 | "additionalProperties": false, 32 | "properties": { 33 | "customData": { 34 | "$ref": "#/definitions/CustomDataType" 35 | }, 36 | "type": { 37 | "$ref": "#/definitions/ResetEnumType" 38 | }, 39 | "evseId": { 40 | "description": "This contains the ID of a specific EVSE that needs to be reset, instead of the entire Charging Station.\r\n", 41 | "type": "integer" 42 | } 43 | }, 44 | "required": [ 45 | "type" 46 | ] 47 | } -------------------------------------------------------------------------------- /ocpp/v201/schemas/SecurityEventNotificationRequest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "comment": "OCPP 2.0.1 FINAL", 4 | "definitions": { 5 | "CustomDataType": { 6 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 7 | "javaType": "CustomData", 8 | "type": "object", 9 | "properties": { 10 | "vendorId": { 11 | "type": "string", 12 | "maxLength": 255 13 | } 14 | }, 15 | "required": [ 16 | "vendorId" 17 | ] 18 | } 19 | }, 20 | "type": "object", 21 | "additionalProperties": false, 22 | "properties": { 23 | "customData": { 24 | "$ref": "#/definitions/CustomDataType" 25 | }, 26 | "type": { 27 | "description": "Type of the security event. This value should be taken from the Security events list.\r\n", 28 | "type": "string", 29 | "maxLength": 50 30 | }, 31 | "timestamp": { 32 | "description": "Date and time at which the event occurred.\r\n", 33 | "type": "string", 34 | "format": "date-time" 35 | }, 36 | "techInfo": { 37 | "description": "Additional information about the occurred security event.\r\n", 38 | "type": "string", 39 | "maxLength": 255 40 | } 41 | }, 42 | "required": [ 43 | "type", 44 | "timestamp" 45 | ] 46 | } -------------------------------------------------------------------------------- /ocpp/v201/schemas/SecurityEventNotificationResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "comment": "OCPP 2.0.1 FINAL", 4 | "definitions": { 5 | "CustomDataType": { 6 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 7 | "javaType": "CustomData", 8 | "type": "object", 9 | "properties": { 10 | "vendorId": { 11 | "type": "string", 12 | "maxLength": 255 13 | } 14 | }, 15 | "required": [ 16 | "vendorId" 17 | ] 18 | } 19 | }, 20 | "type": "object", 21 | "additionalProperties": false, 22 | "properties": { 23 | "customData": { 24 | "$ref": "#/definitions/CustomDataType" 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /ocpp/v201/schemas/SetMonitoringBaseRequest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "comment": "OCPP 2.0.1 FINAL", 4 | "definitions": { 5 | "CustomDataType": { 6 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 7 | "javaType": "CustomData", 8 | "type": "object", 9 | "properties": { 10 | "vendorId": { 11 | "type": "string", 12 | "maxLength": 255 13 | } 14 | }, 15 | "required": [ 16 | "vendorId" 17 | ] 18 | }, 19 | "MonitoringBaseEnumType": { 20 | "description": "Specify which monitoring base will be set\r\n", 21 | "javaType": "MonitoringBaseEnum", 22 | "type": "string", 23 | "additionalProperties": false, 24 | "enum": [ 25 | "All", 26 | "FactoryDefault", 27 | "HardWiredOnly" 28 | ] 29 | } 30 | }, 31 | "type": "object", 32 | "additionalProperties": false, 33 | "properties": { 34 | "customData": { 35 | "$ref": "#/definitions/CustomDataType" 36 | }, 37 | "monitoringBase": { 38 | "$ref": "#/definitions/MonitoringBaseEnumType" 39 | } 40 | }, 41 | "required": [ 42 | "monitoringBase" 43 | ] 44 | } -------------------------------------------------------------------------------- /ocpp/v201/schemas/SignCertificateRequest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "comment": "OCPP 2.0.1 FINAL", 4 | "definitions": { 5 | "CustomDataType": { 6 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 7 | "javaType": "CustomData", 8 | "type": "object", 9 | "properties": { 10 | "vendorId": { 11 | "type": "string", 12 | "maxLength": 255 13 | } 14 | }, 15 | "required": [ 16 | "vendorId" 17 | ] 18 | }, 19 | "CertificateSigningUseEnumType": { 20 | "description": "Indicates the type of certificate that is to be signed. When omitted the certificate is to be used for both the 15118 connection (if implemented) and the Charging Station to CSMS connection.\r\n\r\n", 21 | "javaType": "CertificateSigningUseEnum", 22 | "type": "string", 23 | "additionalProperties": false, 24 | "enum": [ 25 | "ChargingStationCertificate", 26 | "V2GCertificate" 27 | ] 28 | } 29 | }, 30 | "type": "object", 31 | "additionalProperties": false, 32 | "properties": { 33 | "customData": { 34 | "$ref": "#/definitions/CustomDataType" 35 | }, 36 | "csr": { 37 | "description": "The Charging Station SHALL send the public key in form of a Certificate Signing Request (CSR) as described in RFC 2986 [22] and then PEM encoded, using the <<signcertificaterequest,SignCertificateRequest>> message.\r\n", 38 | "type": "string", 39 | "maxLength": 5500 40 | }, 41 | "certificateType": { 42 | "$ref": "#/definitions/CertificateSigningUseEnumType" 43 | } 44 | }, 45 | "required": [ 46 | "csr" 47 | ] 48 | } -------------------------------------------------------------------------------- /ocpp/v201/schemas/StatusNotificationRequest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "comment": "OCPP 2.0.1 FINAL", 4 | "definitions": { 5 | "CustomDataType": { 6 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 7 | "javaType": "CustomData", 8 | "type": "object", 9 | "properties": { 10 | "vendorId": { 11 | "type": "string", 12 | "maxLength": 255 13 | } 14 | }, 15 | "required": [ 16 | "vendorId" 17 | ] 18 | }, 19 | "ConnectorStatusEnumType": { 20 | "description": "This contains the current status of the Connector.\r\n", 21 | "javaType": "ConnectorStatusEnum", 22 | "type": "string", 23 | "additionalProperties": false, 24 | "enum": [ 25 | "Available", 26 | "Occupied", 27 | "Reserved", 28 | "Unavailable", 29 | "Faulted" 30 | ] 31 | } 32 | }, 33 | "type": "object", 34 | "additionalProperties": false, 35 | "properties": { 36 | "customData": { 37 | "$ref": "#/definitions/CustomDataType" 38 | }, 39 | "timestamp": { 40 | "description": "The time for which the status is reported. If absent time of receipt of the message will be assumed.\r\n", 41 | "type": "string", 42 | "format": "date-time" 43 | }, 44 | "connectorStatus": { 45 | "$ref": "#/definitions/ConnectorStatusEnumType" 46 | }, 47 | "evseId": { 48 | "description": "The id of the EVSE to which the connector belongs for which the the status is reported.\r\n", 49 | "type": "integer" 50 | }, 51 | "connectorId": { 52 | "description": "The id of the connector within the EVSE for which the status is reported.\r\n", 53 | "type": "integer" 54 | } 55 | }, 56 | "required": [ 57 | "timestamp", 58 | "connectorStatus", 59 | "evseId", 60 | "connectorId" 61 | ] 62 | } -------------------------------------------------------------------------------- /ocpp/v201/schemas/StatusNotificationResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "comment": "OCPP 2.0.1 FINAL", 4 | "definitions": { 5 | "CustomDataType": { 6 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 7 | "javaType": "CustomData", 8 | "type": "object", 9 | "properties": { 10 | "vendorId": { 11 | "type": "string", 12 | "maxLength": 255 13 | } 14 | }, 15 | "required": [ 16 | "vendorId" 17 | ] 18 | } 19 | }, 20 | "type": "object", 21 | "additionalProperties": false, 22 | "properties": { 23 | "customData": { 24 | "$ref": "#/definitions/CustomDataType" 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /ocpp/v201/schemas/UnlockConnectorRequest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "comment": "OCPP 2.0.1 FINAL", 4 | "definitions": { 5 | "CustomDataType": { 6 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 7 | "javaType": "CustomData", 8 | "type": "object", 9 | "properties": { 10 | "vendorId": { 11 | "type": "string", 12 | "maxLength": 255 13 | } 14 | }, 15 | "required": [ 16 | "vendorId" 17 | ] 18 | } 19 | }, 20 | "type": "object", 21 | "additionalProperties": false, 22 | "properties": { 23 | "customData": { 24 | "$ref": "#/definitions/CustomDataType" 25 | }, 26 | "evseId": { 27 | "description": "This contains the identifier of the EVSE for which a connector needs to be unlocked.\r\n", 28 | "type": "integer" 29 | }, 30 | "connectorId": { 31 | "description": "This contains the identifier of the connector that needs to be unlocked.\r\n", 32 | "type": "integer" 33 | } 34 | }, 35 | "required": [ 36 | "evseId", 37 | "connectorId" 38 | ] 39 | } -------------------------------------------------------------------------------- /ocpp/v201/schemas/UnpublishFirmwareRequest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "comment": "OCPP 2.0.1 FINAL", 4 | "definitions": { 5 | "CustomDataType": { 6 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 7 | "javaType": "CustomData", 8 | "type": "object", 9 | "properties": { 10 | "vendorId": { 11 | "type": "string", 12 | "maxLength": 255 13 | } 14 | }, 15 | "required": [ 16 | "vendorId" 17 | ] 18 | } 19 | }, 20 | "type": "object", 21 | "additionalProperties": false, 22 | "properties": { 23 | "customData": { 24 | "$ref": "#/definitions/CustomDataType" 25 | }, 26 | "checksum": { 27 | "description": "The MD5 checksum over the entire firmware file as a hexadecimal string of length 32. \r\n", 28 | "type": "string", 29 | "maxLength": 32 30 | } 31 | }, 32 | "required": [ 33 | "checksum" 34 | ] 35 | } -------------------------------------------------------------------------------- /ocpp/v201/schemas/UnpublishFirmwareResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "comment": "OCPP 2.0.1 FINAL", 4 | "definitions": { 5 | "CustomDataType": { 6 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 7 | "javaType": "CustomData", 8 | "type": "object", 9 | "properties": { 10 | "vendorId": { 11 | "type": "string", 12 | "maxLength": 255 13 | } 14 | }, 15 | "required": [ 16 | "vendorId" 17 | ] 18 | }, 19 | "UnpublishFirmwareStatusEnumType": { 20 | "description": "Indicates whether the Local Controller succeeded in unpublishing the firmware.\r\n", 21 | "javaType": "UnpublishFirmwareStatusEnum", 22 | "type": "string", 23 | "additionalProperties": false, 24 | "enum": [ 25 | "DownloadOngoing", 26 | "NoFirmware", 27 | "Unpublished" 28 | ] 29 | } 30 | }, 31 | "type": "object", 32 | "additionalProperties": false, 33 | "properties": { 34 | "customData": { 35 | "$ref": "#/definitions/CustomDataType" 36 | }, 37 | "status": { 38 | "$ref": "#/definitions/UnpublishFirmwareStatusEnumType" 39 | } 40 | }, 41 | "required": [ 42 | "status" 43 | ] 44 | } -------------------------------------------------------------------------------- /ocpp/v21/__init__.py: -------------------------------------------------------------------------------- 1 | from ocpp.charge_point import ChargePoint as cp 2 | from ocpp.v21 import call, call_result 3 | 4 | 5 | class ChargePoint(cp): 6 | _call = call 7 | _call_result = call_result 8 | _ocpp_version = "2.1" 9 | -------------------------------------------------------------------------------- /ocpp/v21/schemas/AFRRSignalRequest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:2:2025:1:AFRRSignalRequest", 4 | "comment": "OCPP 2.1 Edition 1 (c) OCA, Creative Commons Attribution-NoDerivatives 4.0 International Public License", 5 | "definitions": { 6 | "CustomDataType": { 7 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 8 | "javaType": "CustomData", 9 | "type": "object", 10 | "properties": { 11 | "vendorId": { 12 | "type": "string", 13 | "maxLength": 255 14 | } 15 | }, 16 | "required": [ 17 | "vendorId" 18 | ] 19 | } 20 | }, 21 | "type": "object", 22 | "additionalProperties": false, 23 | "properties": { 24 | "timestamp": { 25 | "description": "Time when signal becomes active.\r\n", 26 | "type": "string", 27 | "format": "date-time" 28 | }, 29 | "signal": { 30 | "description": "Value of signal in _v2xSignalWattCurve_. \r\n", 31 | "type": "integer" 32 | }, 33 | "customData": { 34 | "$ref": "#/definitions/CustomDataType" 35 | } 36 | }, 37 | "required": [ 38 | "timestamp", 39 | "signal" 40 | ] 41 | } -------------------------------------------------------------------------------- /ocpp/v21/schemas/BatterySwapResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:2:2025:1:BatterySwapResponse", 4 | "description": "This is an empty response that just acknowledges receipt of the request. (The request cannot be rejected).\r\n", 5 | "comment": "OCPP 2.1 Edition 1 (c) OCA, Creative Commons Attribution-NoDerivatives 4.0 International Public License", 6 | "definitions": { 7 | "CustomDataType": { 8 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 9 | "javaType": "CustomData", 10 | "type": "object", 11 | "properties": { 12 | "vendorId": { 13 | "type": "string", 14 | "maxLength": 255 15 | } 16 | }, 17 | "required": [ 18 | "vendorId" 19 | ] 20 | } 21 | }, 22 | "type": "object", 23 | "additionalProperties": false, 24 | "properties": { 25 | "customData": { 26 | "$ref": "#/definitions/CustomDataType" 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /ocpp/v21/schemas/CancelReservationRequest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:2:2025:1:CancelReservationRequest", 4 | "comment": "OCPP 2.1 Edition 1 (c) OCA, Creative Commons Attribution-NoDerivatives 4.0 International Public License", 5 | "definitions": { 6 | "CustomDataType": { 7 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 8 | "javaType": "CustomData", 9 | "type": "object", 10 | "properties": { 11 | "vendorId": { 12 | "type": "string", 13 | "maxLength": 255 14 | } 15 | }, 16 | "required": [ 17 | "vendorId" 18 | ] 19 | } 20 | }, 21 | "type": "object", 22 | "additionalProperties": false, 23 | "properties": { 24 | "reservationId": { 25 | "description": "Id of the reservation to cancel.\r\n", 26 | "type": "integer", 27 | "minimum": 0.0 28 | }, 29 | "customData": { 30 | "$ref": "#/definitions/CustomDataType" 31 | } 32 | }, 33 | "required": [ 34 | "reservationId" 35 | ] 36 | } -------------------------------------------------------------------------------- /ocpp/v21/schemas/ClearCacheRequest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:2:2025:1:ClearCacheRequest", 4 | "comment": "OCPP 2.1 Edition 1 (c) OCA, Creative Commons Attribution-NoDerivatives 4.0 International Public License", 5 | "definitions": { 6 | "CustomDataType": { 7 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 8 | "javaType": "CustomData", 9 | "type": "object", 10 | "properties": { 11 | "vendorId": { 12 | "type": "string", 13 | "maxLength": 255 14 | } 15 | }, 16 | "required": [ 17 | "vendorId" 18 | ] 19 | } 20 | }, 21 | "type": "object", 22 | "additionalProperties": false, 23 | "properties": { 24 | "customData": { 25 | "$ref": "#/definitions/CustomDataType" 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /ocpp/v21/schemas/ClearDisplayMessageRequest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:2:2025:1:ClearDisplayMessageRequest", 4 | "comment": "OCPP 2.1 Edition 1 (c) OCA, Creative Commons Attribution-NoDerivatives 4.0 International Public License", 5 | "definitions": { 6 | "CustomDataType": { 7 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 8 | "javaType": "CustomData", 9 | "type": "object", 10 | "properties": { 11 | "vendorId": { 12 | "type": "string", 13 | "maxLength": 255 14 | } 15 | }, 16 | "required": [ 17 | "vendorId" 18 | ] 19 | } 20 | }, 21 | "type": "object", 22 | "additionalProperties": false, 23 | "properties": { 24 | "id": { 25 | "description": "Id of the message that SHALL be removed from the Charging Station.\r\n", 26 | "type": "integer", 27 | "minimum": 0.0 28 | }, 29 | "customData": { 30 | "$ref": "#/definitions/CustomDataType" 31 | } 32 | }, 33 | "required": [ 34 | "id" 35 | ] 36 | } -------------------------------------------------------------------------------- /ocpp/v21/schemas/ClearTariffsRequest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:2:2025:1:ClearTariffsRequest", 4 | "comment": "OCPP 2.1 Edition 1 (c) OCA, Creative Commons Attribution-NoDerivatives 4.0 International Public License", 5 | "definitions": { 6 | "CustomDataType": { 7 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 8 | "javaType": "CustomData", 9 | "type": "object", 10 | "properties": { 11 | "vendorId": { 12 | "type": "string", 13 | "maxLength": 255 14 | } 15 | }, 16 | "required": [ 17 | "vendorId" 18 | ] 19 | } 20 | }, 21 | "type": "object", 22 | "additionalProperties": false, 23 | "properties": { 24 | "tariffIds": { 25 | "description": "List of tariff Ids to clear. When absent clears all tariffs at _evseId_.\r\n\r\n", 26 | "type": "array", 27 | "additionalItems": false, 28 | "items": { 29 | "type": "string", 30 | "maxLength": 60 31 | }, 32 | "minItems": 1 33 | }, 34 | "evseId": { 35 | "description": "When present only clear tariffs matching _tariffIds_ at EVSE _evseId_.\r\n\r\n", 36 | "type": "integer", 37 | "minimum": 0.0 38 | }, 39 | "customData": { 40 | "$ref": "#/definitions/CustomDataType" 41 | } 42 | } 43 | } -------------------------------------------------------------------------------- /ocpp/v21/schemas/ClearVariableMonitoringRequest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:2:2025:1:ClearVariableMonitoringRequest", 4 | "comment": "OCPP 2.1 Edition 1 (c) OCA, Creative Commons Attribution-NoDerivatives 4.0 International Public License", 5 | "definitions": { 6 | "CustomDataType": { 7 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 8 | "javaType": "CustomData", 9 | "type": "object", 10 | "properties": { 11 | "vendorId": { 12 | "type": "string", 13 | "maxLength": 255 14 | } 15 | }, 16 | "required": [ 17 | "vendorId" 18 | ] 19 | } 20 | }, 21 | "type": "object", 22 | "additionalProperties": false, 23 | "properties": { 24 | "id": { 25 | "description": "List of the monitors to be cleared, identified by there Id.\r\n", 26 | "type": "array", 27 | "additionalItems": false, 28 | "items": { 29 | "type": "integer", 30 | "minimum": 0.0 31 | }, 32 | "minItems": 1 33 | }, 34 | "customData": { 35 | "$ref": "#/definitions/CustomDataType" 36 | } 37 | }, 38 | "required": [ 39 | "id" 40 | ] 41 | } -------------------------------------------------------------------------------- /ocpp/v21/schemas/ClearedChargingLimitRequest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:2:2025:1:ClearedChargingLimitRequest", 4 | "comment": "OCPP 2.1 Edition 1 (c) OCA, Creative Commons Attribution-NoDerivatives 4.0 International Public License", 5 | "definitions": { 6 | "CustomDataType": { 7 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 8 | "javaType": "CustomData", 9 | "type": "object", 10 | "properties": { 11 | "vendorId": { 12 | "type": "string", 13 | "maxLength": 255 14 | } 15 | }, 16 | "required": [ 17 | "vendorId" 18 | ] 19 | } 20 | }, 21 | "type": "object", 22 | "additionalProperties": false, 23 | "properties": { 24 | "chargingLimitSource": { 25 | "description": "Source of the charging limit. Allowed values defined in Appendix as ChargingLimitSourceEnumStringType.\r\n", 26 | "type": "string", 27 | "maxLength": 20 28 | }, 29 | "evseId": { 30 | "description": "EVSE Identifier.\r\n", 31 | "type": "integer", 32 | "minimum": 0.0 33 | }, 34 | "customData": { 35 | "$ref": "#/definitions/CustomDataType" 36 | } 37 | }, 38 | "required": [ 39 | "chargingLimitSource" 40 | ] 41 | } -------------------------------------------------------------------------------- /ocpp/v21/schemas/ClearedChargingLimitResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:2:2025:1:ClearedChargingLimitResponse", 4 | "comment": "OCPP 2.1 Edition 1 (c) OCA, Creative Commons Attribution-NoDerivatives 4.0 International Public License", 5 | "definitions": { 6 | "CustomDataType": { 7 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 8 | "javaType": "CustomData", 9 | "type": "object", 10 | "properties": { 11 | "vendorId": { 12 | "type": "string", 13 | "maxLength": 255 14 | } 15 | }, 16 | "required": [ 17 | "vendorId" 18 | ] 19 | } 20 | }, 21 | "type": "object", 22 | "additionalProperties": false, 23 | "properties": { 24 | "customData": { 25 | "$ref": "#/definitions/CustomDataType" 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /ocpp/v21/schemas/ClosePeriodicEventStreamRequest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:2:2025:1:ClosePeriodicEventStreamRequest", 4 | "comment": "OCPP 2.1 Edition 1 (c) OCA, Creative Commons Attribution-NoDerivatives 4.0 International Public License", 5 | "definitions": { 6 | "CustomDataType": { 7 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 8 | "javaType": "CustomData", 9 | "type": "object", 10 | "properties": { 11 | "vendorId": { 12 | "type": "string", 13 | "maxLength": 255 14 | } 15 | }, 16 | "required": [ 17 | "vendorId" 18 | ] 19 | } 20 | }, 21 | "type": "object", 22 | "additionalProperties": false, 23 | "properties": { 24 | "id": { 25 | "description": "Id of stream to close.\r\n", 26 | "type": "integer", 27 | "minimum": 0.0 28 | }, 29 | "customData": { 30 | "$ref": "#/definitions/CustomDataType" 31 | } 32 | }, 33 | "required": [ 34 | "id" 35 | ] 36 | } -------------------------------------------------------------------------------- /ocpp/v21/schemas/ClosePeriodicEventStreamResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:2:2025:1:ClosePeriodicEventStreamResponse", 4 | "comment": "OCPP 2.1 Edition 1 (c) OCA, Creative Commons Attribution-NoDerivatives 4.0 International Public License", 5 | "definitions": { 6 | "CustomDataType": { 7 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 8 | "javaType": "CustomData", 9 | "type": "object", 10 | "properties": { 11 | "vendorId": { 12 | "type": "string", 13 | "maxLength": 255 14 | } 15 | }, 16 | "required": [ 17 | "vendorId" 18 | ] 19 | } 20 | }, 21 | "type": "object", 22 | "additionalProperties": false, 23 | "properties": { 24 | "customData": { 25 | "$ref": "#/definitions/CustomDataType" 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /ocpp/v21/schemas/CostUpdatedRequest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:2:2025:1:CostUpdatedRequest", 4 | "comment": "OCPP 2.1 Edition 1 (c) OCA, Creative Commons Attribution-NoDerivatives 4.0 International Public License", 5 | "definitions": { 6 | "CustomDataType": { 7 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 8 | "javaType": "CustomData", 9 | "type": "object", 10 | "properties": { 11 | "vendorId": { 12 | "type": "string", 13 | "maxLength": 255 14 | } 15 | }, 16 | "required": [ 17 | "vendorId" 18 | ] 19 | } 20 | }, 21 | "type": "object", 22 | "additionalProperties": false, 23 | "properties": { 24 | "totalCost": { 25 | "description": "Current total cost, based on the information known by the CSMS, of the transaction including taxes. In the currency configured with the configuration Variable: [<<configkey-currency, Currency>>]\r\n\r\n", 26 | "type": "number" 27 | }, 28 | "transactionId": { 29 | "description": "Transaction Id of the transaction the current cost are asked for.\r\n\r\n", 30 | "type": "string", 31 | "maxLength": 36 32 | }, 33 | "customData": { 34 | "$ref": "#/definitions/CustomDataType" 35 | } 36 | }, 37 | "required": [ 38 | "totalCost", 39 | "transactionId" 40 | ] 41 | } -------------------------------------------------------------------------------- /ocpp/v21/schemas/CostUpdatedResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:2:2025:1:CostUpdatedResponse", 4 | "comment": "OCPP 2.1 Edition 1 (c) OCA, Creative Commons Attribution-NoDerivatives 4.0 International Public License", 5 | "definitions": { 6 | "CustomDataType": { 7 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 8 | "javaType": "CustomData", 9 | "type": "object", 10 | "properties": { 11 | "vendorId": { 12 | "type": "string", 13 | "maxLength": 255 14 | } 15 | }, 16 | "required": [ 17 | "vendorId" 18 | ] 19 | } 20 | }, 21 | "type": "object", 22 | "additionalProperties": false, 23 | "properties": { 24 | "customData": { 25 | "$ref": "#/definitions/CustomDataType" 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /ocpp/v21/schemas/DataTransferRequest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:2:2025:1:DataTransferRequest", 4 | "comment": "OCPP 2.1 Edition 1 (c) OCA, Creative Commons Attribution-NoDerivatives 4.0 International Public License", 5 | "definitions": { 6 | "CustomDataType": { 7 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 8 | "javaType": "CustomData", 9 | "type": "object", 10 | "properties": { 11 | "vendorId": { 12 | "type": "string", 13 | "maxLength": 255 14 | } 15 | }, 16 | "required": [ 17 | "vendorId" 18 | ] 19 | } 20 | }, 21 | "type": "object", 22 | "additionalProperties": false, 23 | "properties": { 24 | "messageId": { 25 | "description": "May be used to indicate a specific message or implementation.\r\n", 26 | "type": "string", 27 | "maxLength": 50 28 | }, 29 | "data": { 30 | "description": "Data without specified length or format. This needs to be decided by both parties (Open to implementation).\r\n" 31 | }, 32 | "vendorId": { 33 | "description": "This identifies the Vendor specific implementation\r\n\r\n", 34 | "type": "string", 35 | "maxLength": 255 36 | }, 37 | "customData": { 38 | "$ref": "#/definitions/CustomDataType" 39 | } 40 | }, 41 | "required": [ 42 | "vendorId" 43 | ] 44 | } -------------------------------------------------------------------------------- /ocpp/v21/schemas/FirmwareStatusNotificationResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:2:2025:1:FirmwareStatusNotificationResponse", 4 | "comment": "OCPP 2.1 Edition 1 (c) OCA, Creative Commons Attribution-NoDerivatives 4.0 International Public License", 5 | "definitions": { 6 | "CustomDataType": { 7 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 8 | "javaType": "CustomData", 9 | "type": "object", 10 | "properties": { 11 | "vendorId": { 12 | "type": "string", 13 | "maxLength": 255 14 | } 15 | }, 16 | "required": [ 17 | "vendorId" 18 | ] 19 | } 20 | }, 21 | "type": "object", 22 | "additionalProperties": false, 23 | "properties": { 24 | "customData": { 25 | "$ref": "#/definitions/CustomDataType" 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /ocpp/v21/schemas/GetBaseReportRequest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:2:2025:1:GetBaseReportRequest", 4 | "comment": "OCPP 2.1 Edition 1 (c) OCA, Creative Commons Attribution-NoDerivatives 4.0 International Public License", 5 | "definitions": { 6 | "ReportBaseEnumType": { 7 | "description": "This field specifies the report base.\r\n", 8 | "javaType": "ReportBaseEnum", 9 | "type": "string", 10 | "additionalProperties": false, 11 | "enum": [ 12 | "ConfigurationInventory", 13 | "FullInventory", 14 | "SummaryInventory" 15 | ] 16 | }, 17 | "CustomDataType": { 18 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 19 | "javaType": "CustomData", 20 | "type": "object", 21 | "properties": { 22 | "vendorId": { 23 | "type": "string", 24 | "maxLength": 255 25 | } 26 | }, 27 | "required": [ 28 | "vendorId" 29 | ] 30 | } 31 | }, 32 | "type": "object", 33 | "additionalProperties": false, 34 | "properties": { 35 | "requestId": { 36 | "description": "The Id of the request.\r\n", 37 | "type": "integer" 38 | }, 39 | "reportBase": { 40 | "$ref": "#/definitions/ReportBaseEnumType" 41 | }, 42 | "customData": { 43 | "$ref": "#/definitions/CustomDataType" 44 | } 45 | }, 46 | "required": [ 47 | "requestId", 48 | "reportBase" 49 | ] 50 | } -------------------------------------------------------------------------------- /ocpp/v21/schemas/GetLocalListVersionRequest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:2:2025:1:GetLocalListVersionRequest", 4 | "comment": "OCPP 2.1 Edition 1 (c) OCA, Creative Commons Attribution-NoDerivatives 4.0 International Public License", 5 | "definitions": { 6 | "CustomDataType": { 7 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 8 | "javaType": "CustomData", 9 | "type": "object", 10 | "properties": { 11 | "vendorId": { 12 | "type": "string", 13 | "maxLength": 255 14 | } 15 | }, 16 | "required": [ 17 | "vendorId" 18 | ] 19 | } 20 | }, 21 | "type": "object", 22 | "additionalProperties": false, 23 | "properties": { 24 | "customData": { 25 | "$ref": "#/definitions/CustomDataType" 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /ocpp/v21/schemas/GetLocalListVersionResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:2:2025:1:GetLocalListVersionResponse", 4 | "comment": "OCPP 2.1 Edition 1 (c) OCA, Creative Commons Attribution-NoDerivatives 4.0 International Public License", 5 | "definitions": { 6 | "CustomDataType": { 7 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 8 | "javaType": "CustomData", 9 | "type": "object", 10 | "properties": { 11 | "vendorId": { 12 | "type": "string", 13 | "maxLength": 255 14 | } 15 | }, 16 | "required": [ 17 | "vendorId" 18 | ] 19 | } 20 | }, 21 | "type": "object", 22 | "additionalProperties": false, 23 | "properties": { 24 | "versionNumber": { 25 | "description": "This contains the current version number of the local authorization list in the Charging Station.\r\n", 26 | "type": "integer" 27 | }, 28 | "customData": { 29 | "$ref": "#/definitions/CustomDataType" 30 | } 31 | }, 32 | "required": [ 33 | "versionNumber" 34 | ] 35 | } -------------------------------------------------------------------------------- /ocpp/v21/schemas/GetPeriodicEventStreamRequest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:2:2025:1:GetPeriodicEventStreamRequest", 4 | "description": "This message is empty. It has no fields.\r\n", 5 | "comment": "OCPP 2.1 Edition 1 (c) OCA, Creative Commons Attribution-NoDerivatives 4.0 International Public License", 6 | "definitions": { 7 | "CustomDataType": { 8 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 9 | "javaType": "CustomData", 10 | "type": "object", 11 | "properties": { 12 | "vendorId": { 13 | "type": "string", 14 | "maxLength": 255 15 | } 16 | }, 17 | "required": [ 18 | "vendorId" 19 | ] 20 | } 21 | }, 22 | "type": "object", 23 | "additionalProperties": false, 24 | "properties": { 25 | "customData": { 26 | "$ref": "#/definitions/CustomDataType" 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /ocpp/v21/schemas/GetTariffsRequest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:2:2025:1:GetTariffsRequest", 4 | "comment": "OCPP 2.1 Edition 1 (c) OCA, Creative Commons Attribution-NoDerivatives 4.0 International Public License", 5 | "definitions": { 6 | "CustomDataType": { 7 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 8 | "javaType": "CustomData", 9 | "type": "object", 10 | "properties": { 11 | "vendorId": { 12 | "type": "string", 13 | "maxLength": 255 14 | } 15 | }, 16 | "required": [ 17 | "vendorId" 18 | ] 19 | } 20 | }, 21 | "type": "object", 22 | "additionalProperties": false, 23 | "properties": { 24 | "evseId": { 25 | "description": "EVSE id to get tariff from. When _evseId_ = 0, this gets tariffs from all EVSEs.\r\n", 26 | "type": "integer", 27 | "minimum": 0.0 28 | }, 29 | "customData": { 30 | "$ref": "#/definitions/CustomDataType" 31 | } 32 | }, 33 | "required": [ 34 | "evseId" 35 | ] 36 | } -------------------------------------------------------------------------------- /ocpp/v21/schemas/GetTransactionStatusRequest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:2:2025:1:GetTransactionStatusRequest", 4 | "comment": "OCPP 2.1 Edition 1 (c) OCA, Creative Commons Attribution-NoDerivatives 4.0 International Public License", 5 | "definitions": { 6 | "CustomDataType": { 7 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 8 | "javaType": "CustomData", 9 | "type": "object", 10 | "properties": { 11 | "vendorId": { 12 | "type": "string", 13 | "maxLength": 255 14 | } 15 | }, 16 | "required": [ 17 | "vendorId" 18 | ] 19 | } 20 | }, 21 | "type": "object", 22 | "additionalProperties": false, 23 | "properties": { 24 | "transactionId": { 25 | "description": "The Id of the transaction for which the status is requested.\r\n", 26 | "type": "string", 27 | "maxLength": 36 28 | }, 29 | "customData": { 30 | "$ref": "#/definitions/CustomDataType" 31 | } 32 | } 33 | } -------------------------------------------------------------------------------- /ocpp/v21/schemas/GetTransactionStatusResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:2:2025:1:GetTransactionStatusResponse", 4 | "comment": "OCPP 2.1 Edition 1 (c) OCA, Creative Commons Attribution-NoDerivatives 4.0 International Public License", 5 | "definitions": { 6 | "CustomDataType": { 7 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 8 | "javaType": "CustomData", 9 | "type": "object", 10 | "properties": { 11 | "vendorId": { 12 | "type": "string", 13 | "maxLength": 255 14 | } 15 | }, 16 | "required": [ 17 | "vendorId" 18 | ] 19 | } 20 | }, 21 | "type": "object", 22 | "additionalProperties": false, 23 | "properties": { 24 | "ongoingIndicator": { 25 | "description": "Whether the transaction is still ongoing.\r\n", 26 | "type": "boolean" 27 | }, 28 | "messagesInQueue": { 29 | "description": "Whether there are still message to be delivered.\r\n", 30 | "type": "boolean" 31 | }, 32 | "customData": { 33 | "$ref": "#/definitions/CustomDataType" 34 | } 35 | }, 36 | "required": [ 37 | "messagesInQueue" 38 | ] 39 | } -------------------------------------------------------------------------------- /ocpp/v21/schemas/HeartbeatRequest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:2:2025:1:HeartbeatRequest", 4 | "comment": "OCPP 2.1 Edition 1 (c) OCA, Creative Commons Attribution-NoDerivatives 4.0 International Public License", 5 | "definitions": { 6 | "CustomDataType": { 7 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 8 | "javaType": "CustomData", 9 | "type": "object", 10 | "properties": { 11 | "vendorId": { 12 | "type": "string", 13 | "maxLength": 255 14 | } 15 | }, 16 | "required": [ 17 | "vendorId" 18 | ] 19 | } 20 | }, 21 | "type": "object", 22 | "additionalProperties": false, 23 | "properties": { 24 | "customData": { 25 | "$ref": "#/definitions/CustomDataType" 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /ocpp/v21/schemas/HeartbeatResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:2:2025:1:HeartbeatResponse", 4 | "comment": "OCPP 2.1 Edition 1 (c) OCA, Creative Commons Attribution-NoDerivatives 4.0 International Public License", 5 | "definitions": { 6 | "CustomDataType": { 7 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 8 | "javaType": "CustomData", 9 | "type": "object", 10 | "properties": { 11 | "vendorId": { 12 | "type": "string", 13 | "maxLength": 255 14 | } 15 | }, 16 | "required": [ 17 | "vendorId" 18 | ] 19 | } 20 | }, 21 | "type": "object", 22 | "additionalProperties": false, 23 | "properties": { 24 | "currentTime": { 25 | "description": "Contains the current time of the CSMS.\r\n", 26 | "type": "string", 27 | "format": "date-time" 28 | }, 29 | "customData": { 30 | "$ref": "#/definitions/CustomDataType" 31 | } 32 | }, 33 | "required": [ 34 | "currentTime" 35 | ] 36 | } -------------------------------------------------------------------------------- /ocpp/v21/schemas/LogStatusNotificationResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:2:2025:1:LogStatusNotificationResponse", 4 | "comment": "OCPP 2.1 Edition 1 (c) OCA, Creative Commons Attribution-NoDerivatives 4.0 International Public License", 5 | "definitions": { 6 | "CustomDataType": { 7 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 8 | "javaType": "CustomData", 9 | "type": "object", 10 | "properties": { 11 | "vendorId": { 12 | "type": "string", 13 | "maxLength": 255 14 | } 15 | }, 16 | "required": [ 17 | "vendorId" 18 | ] 19 | } 20 | }, 21 | "type": "object", 22 | "additionalProperties": false, 23 | "properties": { 24 | "customData": { 25 | "$ref": "#/definitions/CustomDataType" 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /ocpp/v21/schemas/MeterValuesResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:2:2025:1:MeterValuesResponse", 4 | "comment": "OCPP 2.1 Edition 1 (c) OCA, Creative Commons Attribution-NoDerivatives 4.0 International Public License", 5 | "definitions": { 6 | "CustomDataType": { 7 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 8 | "javaType": "CustomData", 9 | "type": "object", 10 | "properties": { 11 | "vendorId": { 12 | "type": "string", 13 | "maxLength": 255 14 | } 15 | }, 16 | "required": [ 17 | "vendorId" 18 | ] 19 | } 20 | }, 21 | "type": "object", 22 | "additionalProperties": false, 23 | "properties": { 24 | "customData": { 25 | "$ref": "#/definitions/CustomDataType" 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /ocpp/v21/schemas/NotifyChargingLimitResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:2:2025:1:NotifyChargingLimitResponse", 4 | "comment": "OCPP 2.1 Edition 1 (c) OCA, Creative Commons Attribution-NoDerivatives 4.0 International Public License", 5 | "definitions": { 6 | "CustomDataType": { 7 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 8 | "javaType": "CustomData", 9 | "type": "object", 10 | "properties": { 11 | "vendorId": { 12 | "type": "string", 13 | "maxLength": 255 14 | } 15 | }, 16 | "required": [ 17 | "vendorId" 18 | ] 19 | } 20 | }, 21 | "type": "object", 22 | "additionalProperties": false, 23 | "properties": { 24 | "customData": { 25 | "$ref": "#/definitions/CustomDataType" 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /ocpp/v21/schemas/NotifyCustomerInformationResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:2:2025:1:NotifyCustomerInformationResponse", 4 | "comment": "OCPP 2.1 Edition 1 (c) OCA, Creative Commons Attribution-NoDerivatives 4.0 International Public License", 5 | "definitions": { 6 | "CustomDataType": { 7 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 8 | "javaType": "CustomData", 9 | "type": "object", 10 | "properties": { 11 | "vendorId": { 12 | "type": "string", 13 | "maxLength": 255 14 | } 15 | }, 16 | "required": [ 17 | "vendorId" 18 | ] 19 | } 20 | }, 21 | "type": "object", 22 | "additionalProperties": false, 23 | "properties": { 24 | "customData": { 25 | "$ref": "#/definitions/CustomDataType" 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /ocpp/v21/schemas/NotifyDERAlarmResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:2:2025:1:NotifyDERAlarmResponse", 4 | "comment": "OCPP 2.1 Edition 1 (c) OCA, Creative Commons Attribution-NoDerivatives 4.0 International Public License", 5 | "definitions": { 6 | "CustomDataType": { 7 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 8 | "javaType": "CustomData", 9 | "type": "object", 10 | "properties": { 11 | "vendorId": { 12 | "type": "string", 13 | "maxLength": 255 14 | } 15 | }, 16 | "required": [ 17 | "vendorId" 18 | ] 19 | } 20 | }, 21 | "type": "object", 22 | "additionalProperties": false, 23 | "properties": { 24 | "customData": { 25 | "$ref": "#/definitions/CustomDataType" 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /ocpp/v21/schemas/NotifyDERStartStopResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:2:2025:1:NotifyDERStartStopResponse", 4 | "comment": "OCPP 2.1 Edition 1 (c) OCA, Creative Commons Attribution-NoDerivatives 4.0 International Public License", 5 | "definitions": { 6 | "CustomDataType": { 7 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 8 | "javaType": "CustomData", 9 | "type": "object", 10 | "properties": { 11 | "vendorId": { 12 | "type": "string", 13 | "maxLength": 255 14 | } 15 | }, 16 | "required": [ 17 | "vendorId" 18 | ] 19 | } 20 | }, 21 | "type": "object", 22 | "additionalProperties": false, 23 | "properties": { 24 | "customData": { 25 | "$ref": "#/definitions/CustomDataType" 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /ocpp/v21/schemas/NotifyDisplayMessagesResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:2:2025:1:NotifyDisplayMessagesResponse", 4 | "comment": "OCPP 2.1 Edition 1 (c) OCA, Creative Commons Attribution-NoDerivatives 4.0 International Public License", 5 | "definitions": { 6 | "CustomDataType": { 7 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 8 | "javaType": "CustomData", 9 | "type": "object", 10 | "properties": { 11 | "vendorId": { 12 | "type": "string", 13 | "maxLength": 255 14 | } 15 | }, 16 | "required": [ 17 | "vendorId" 18 | ] 19 | } 20 | }, 21 | "type": "object", 22 | "additionalProperties": false, 23 | "properties": { 24 | "customData": { 25 | "$ref": "#/definitions/CustomDataType" 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /ocpp/v21/schemas/NotifyEventResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:2:2025:1:NotifyEventResponse", 4 | "comment": "OCPP 2.1 Edition 1 (c) OCA, Creative Commons Attribution-NoDerivatives 4.0 International Public License", 5 | "definitions": { 6 | "CustomDataType": { 7 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 8 | "javaType": "CustomData", 9 | "type": "object", 10 | "properties": { 11 | "vendorId": { 12 | "type": "string", 13 | "maxLength": 255 14 | } 15 | }, 16 | "required": [ 17 | "vendorId" 18 | ] 19 | } 20 | }, 21 | "type": "object", 22 | "additionalProperties": false, 23 | "properties": { 24 | "customData": { 25 | "$ref": "#/definitions/CustomDataType" 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /ocpp/v21/schemas/NotifyMonitoringReportResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:2:2025:1:NotifyMonitoringReportResponse", 4 | "comment": "OCPP 2.1 Edition 1 (c) OCA, Creative Commons Attribution-NoDerivatives 4.0 International Public License", 5 | "definitions": { 6 | "CustomDataType": { 7 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 8 | "javaType": "CustomData", 9 | "type": "object", 10 | "properties": { 11 | "vendorId": { 12 | "type": "string", 13 | "maxLength": 255 14 | } 15 | }, 16 | "required": [ 17 | "vendorId" 18 | ] 19 | } 20 | }, 21 | "type": "object", 22 | "additionalProperties": false, 23 | "properties": { 24 | "customData": { 25 | "$ref": "#/definitions/CustomDataType" 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /ocpp/v21/schemas/NotifyPriorityChargingRequest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:2:2025:1:NotifyPriorityChargingRequest", 4 | "comment": "OCPP 2.1 Edition 1 (c) OCA, Creative Commons Attribution-NoDerivatives 4.0 International Public License", 5 | "definitions": { 6 | "CustomDataType": { 7 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 8 | "javaType": "CustomData", 9 | "type": "object", 10 | "properties": { 11 | "vendorId": { 12 | "type": "string", 13 | "maxLength": 255 14 | } 15 | }, 16 | "required": [ 17 | "vendorId" 18 | ] 19 | } 20 | }, 21 | "type": "object", 22 | "additionalProperties": false, 23 | "properties": { 24 | "transactionId": { 25 | "description": "The transaction for which priority charging is requested.\r\n", 26 | "type": "string", 27 | "maxLength": 36 28 | }, 29 | "activated": { 30 | "description": "True if priority charging was activated. False if it has stopped using the priority charging profile.\r\n", 31 | "type": "boolean" 32 | }, 33 | "customData": { 34 | "$ref": "#/definitions/CustomDataType" 35 | } 36 | }, 37 | "required": [ 38 | "transactionId", 39 | "activated" 40 | ] 41 | } -------------------------------------------------------------------------------- /ocpp/v21/schemas/NotifyPriorityChargingResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:2:2025:1:NotifyPriorityChargingResponse", 4 | "description": "This response message has an empty body.\r\n", 5 | "comment": "OCPP 2.1 Edition 1 (c) OCA, Creative Commons Attribution-NoDerivatives 4.0 International Public License", 6 | "definitions": { 7 | "CustomDataType": { 8 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 9 | "javaType": "CustomData", 10 | "type": "object", 11 | "properties": { 12 | "vendorId": { 13 | "type": "string", 14 | "maxLength": 255 15 | } 16 | }, 17 | "required": [ 18 | "vendorId" 19 | ] 20 | } 21 | }, 22 | "type": "object", 23 | "additionalProperties": false, 24 | "properties": { 25 | "customData": { 26 | "$ref": "#/definitions/CustomDataType" 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /ocpp/v21/schemas/NotifyReportResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:2:2025:1:NotifyReportResponse", 4 | "comment": "OCPP 2.1 Edition 1 (c) OCA, Creative Commons Attribution-NoDerivatives 4.0 International Public License", 5 | "definitions": { 6 | "CustomDataType": { 7 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 8 | "javaType": "CustomData", 9 | "type": "object", 10 | "properties": { 11 | "vendorId": { 12 | "type": "string", 13 | "maxLength": 255 14 | } 15 | }, 16 | "required": [ 17 | "vendorId" 18 | ] 19 | } 20 | }, 21 | "type": "object", 22 | "additionalProperties": false, 23 | "properties": { 24 | "customData": { 25 | "$ref": "#/definitions/CustomDataType" 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /ocpp/v21/schemas/NotifySettlementResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:2:2025:1:NotifySettlementResponse", 4 | "comment": "OCPP 2.1 Edition 1 (c) OCA, Creative Commons Attribution-NoDerivatives 4.0 International Public License", 5 | "definitions": { 6 | "CustomDataType": { 7 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 8 | "javaType": "CustomData", 9 | "type": "object", 10 | "properties": { 11 | "vendorId": { 12 | "type": "string", 13 | "maxLength": 255 14 | } 15 | }, 16 | "required": [ 17 | "vendorId" 18 | ] 19 | } 20 | }, 21 | "type": "object", 22 | "additionalProperties": false, 23 | "properties": { 24 | "receiptUrl": { 25 | "description": "The receipt URL if receipt generated by CSMS. The Charging Station can QR encode it and show it to the EV Driver.\r\n\r\n", 26 | "type": "string", 27 | "maxLength": 2000 28 | }, 29 | "receiptId": { 30 | "description": "The receipt id if the receipt is generated by CSMS.\r\n\r\n", 31 | "type": "string", 32 | "maxLength": 50 33 | }, 34 | "customData": { 35 | "$ref": "#/definitions/CustomDataType" 36 | } 37 | } 38 | } -------------------------------------------------------------------------------- /ocpp/v21/schemas/NotifyWebPaymentStartedRequest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:2:2025:1:NotifyWebPaymentStartedRequest", 4 | "comment": "OCPP 2.1 Edition 1 (c) OCA, Creative Commons Attribution-NoDerivatives 4.0 International Public License", 5 | "definitions": { 6 | "CustomDataType": { 7 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 8 | "javaType": "CustomData", 9 | "type": "object", 10 | "properties": { 11 | "vendorId": { 12 | "type": "string", 13 | "maxLength": 255 14 | } 15 | }, 16 | "required": [ 17 | "vendorId" 18 | ] 19 | } 20 | }, 21 | "type": "object", 22 | "additionalProperties": false, 23 | "properties": { 24 | "evseId": { 25 | "description": "EVSE id for which transaction is requested.\r\n\r\n", 26 | "type": "integer", 27 | "minimum": 0.0 28 | }, 29 | "timeout": { 30 | "description": "Timeout value in seconds after which no result of web payment process (e.g. QR code scanning) is to be expected anymore.\r\n", 31 | "type": "integer" 32 | }, 33 | "customData": { 34 | "$ref": "#/definitions/CustomDataType" 35 | } 36 | }, 37 | "required": [ 38 | "evseId", 39 | "timeout" 40 | ] 41 | } -------------------------------------------------------------------------------- /ocpp/v21/schemas/NotifyWebPaymentStartedResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:2:2025:1:NotifyWebPaymentStartedResponse", 4 | "comment": "OCPP 2.1 Edition 1 (c) OCA, Creative Commons Attribution-NoDerivatives 4.0 International Public License", 5 | "definitions": { 6 | "CustomDataType": { 7 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 8 | "javaType": "CustomData", 9 | "type": "object", 10 | "properties": { 11 | "vendorId": { 12 | "type": "string", 13 | "maxLength": 255 14 | } 15 | }, 16 | "required": [ 17 | "vendorId" 18 | ] 19 | } 20 | }, 21 | "type": "object", 22 | "additionalProperties": false, 23 | "properties": { 24 | "customData": { 25 | "$ref": "#/definitions/CustomDataType" 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /ocpp/v21/schemas/PublishFirmwareStatusNotificationResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:2:2025:1:PublishFirmwareStatusNotificationResponse", 4 | "comment": "OCPP 2.1 Edition 1 (c) OCA, Creative Commons Attribution-NoDerivatives 4.0 International Public License", 5 | "definitions": { 6 | "CustomDataType": { 7 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 8 | "javaType": "CustomData", 9 | "type": "object", 10 | "properties": { 11 | "vendorId": { 12 | "type": "string", 13 | "maxLength": 255 14 | } 15 | }, 16 | "required": [ 17 | "vendorId" 18 | ] 19 | } 20 | }, 21 | "type": "object", 22 | "additionalProperties": false, 23 | "properties": { 24 | "customData": { 25 | "$ref": "#/definitions/CustomDataType" 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /ocpp/v21/schemas/PullDynamicScheduleUpdateRequest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:2:2025:1:PullDynamicScheduleUpdateRequest", 4 | "comment": "OCPP 2.1 Edition 1 (c) OCA, Creative Commons Attribution-NoDerivatives 4.0 International Public License", 5 | "definitions": { 6 | "CustomDataType": { 7 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 8 | "javaType": "CustomData", 9 | "type": "object", 10 | "properties": { 11 | "vendorId": { 12 | "type": "string", 13 | "maxLength": 255 14 | } 15 | }, 16 | "required": [ 17 | "vendorId" 18 | ] 19 | } 20 | }, 21 | "type": "object", 22 | "additionalProperties": false, 23 | "properties": { 24 | "chargingProfileId": { 25 | "description": "Id of charging profile to update.\r\n", 26 | "type": "integer" 27 | }, 28 | "customData": { 29 | "$ref": "#/definitions/CustomDataType" 30 | } 31 | }, 32 | "required": [ 33 | "chargingProfileId" 34 | ] 35 | } -------------------------------------------------------------------------------- /ocpp/v21/schemas/ReportChargingProfilesResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:2:2025:1:ReportChargingProfilesResponse", 4 | "comment": "OCPP 2.1 Edition 1 (c) OCA, Creative Commons Attribution-NoDerivatives 4.0 International Public License", 5 | "definitions": { 6 | "CustomDataType": { 7 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 8 | "javaType": "CustomData", 9 | "type": "object", 10 | "properties": { 11 | "vendorId": { 12 | "type": "string", 13 | "maxLength": 255 14 | } 15 | }, 16 | "required": [ 17 | "vendorId" 18 | ] 19 | } 20 | }, 21 | "type": "object", 22 | "additionalProperties": false, 23 | "properties": { 24 | "customData": { 25 | "$ref": "#/definitions/CustomDataType" 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /ocpp/v21/schemas/ReportDERControlResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:2:2025:1:ReportDERControlResponse", 4 | "description": "This message has no parameters.\r\n\r\n", 5 | "comment": "OCPP 2.1 Edition 1 (c) OCA, Creative Commons Attribution-NoDerivatives 4.0 International Public License", 6 | "definitions": { 7 | "CustomDataType": { 8 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 9 | "javaType": "CustomData", 10 | "type": "object", 11 | "properties": { 12 | "vendorId": { 13 | "type": "string", 14 | "maxLength": 255 15 | } 16 | }, 17 | "required": [ 18 | "vendorId" 19 | ] 20 | } 21 | }, 22 | "type": "object", 23 | "additionalProperties": false, 24 | "properties": { 25 | "customData": { 26 | "$ref": "#/definitions/CustomDataType" 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /ocpp/v21/schemas/RequestStopTransactionRequest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:2:2025:1:RequestStopTransactionRequest", 4 | "comment": "OCPP 2.1 Edition 1 (c) OCA, Creative Commons Attribution-NoDerivatives 4.0 International Public License", 5 | "definitions": { 6 | "CustomDataType": { 7 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 8 | "javaType": "CustomData", 9 | "type": "object", 10 | "properties": { 11 | "vendorId": { 12 | "type": "string", 13 | "maxLength": 255 14 | } 15 | }, 16 | "required": [ 17 | "vendorId" 18 | ] 19 | } 20 | }, 21 | "type": "object", 22 | "additionalProperties": false, 23 | "properties": { 24 | "transactionId": { 25 | "description": "The identifier of the transaction which the Charging Station is requested to stop.\r\n", 26 | "type": "string", 27 | "maxLength": 36 28 | }, 29 | "customData": { 30 | "$ref": "#/definitions/CustomDataType" 31 | } 32 | }, 33 | "required": [ 34 | "transactionId" 35 | ] 36 | } -------------------------------------------------------------------------------- /ocpp/v21/schemas/ReservationStatusUpdateResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:2:2025:1:ReservationStatusUpdateResponse", 4 | "comment": "OCPP 2.1 Edition 1 (c) OCA, Creative Commons Attribution-NoDerivatives 4.0 International Public License", 5 | "definitions": { 6 | "CustomDataType": { 7 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 8 | "javaType": "CustomData", 9 | "type": "object", 10 | "properties": { 11 | "vendorId": { 12 | "type": "string", 13 | "maxLength": 255 14 | } 15 | }, 16 | "required": [ 17 | "vendorId" 18 | ] 19 | } 20 | }, 21 | "type": "object", 22 | "additionalProperties": false, 23 | "properties": { 24 | "customData": { 25 | "$ref": "#/definitions/CustomDataType" 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /ocpp/v21/schemas/ResetRequest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:2:2025:1:ResetRequest", 4 | "comment": "OCPP 2.1 Edition 1 (c) OCA, Creative Commons Attribution-NoDerivatives 4.0 International Public License", 5 | "definitions": { 6 | "ResetEnumType": { 7 | "description": "This contains the type of reset that the Charging Station or EVSE should perform.\r\n", 8 | "javaType": "ResetEnum", 9 | "type": "string", 10 | "additionalProperties": false, 11 | "enum": [ 12 | "Immediate", 13 | "OnIdle", 14 | "ImmediateAndResume" 15 | ] 16 | }, 17 | "CustomDataType": { 18 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 19 | "javaType": "CustomData", 20 | "type": "object", 21 | "properties": { 22 | "vendorId": { 23 | "type": "string", 24 | "maxLength": 255 25 | } 26 | }, 27 | "required": [ 28 | "vendorId" 29 | ] 30 | } 31 | }, 32 | "type": "object", 33 | "additionalProperties": false, 34 | "properties": { 35 | "type": { 36 | "$ref": "#/definitions/ResetEnumType" 37 | }, 38 | "evseId": { 39 | "description": "This contains the ID of a specific EVSE that needs to be reset, instead of the entire Charging Station.\r\n", 40 | "type": "integer", 41 | "minimum": 0.0 42 | }, 43 | "customData": { 44 | "$ref": "#/definitions/CustomDataType" 45 | } 46 | }, 47 | "required": [ 48 | "type" 49 | ] 50 | } -------------------------------------------------------------------------------- /ocpp/v21/schemas/SecurityEventNotificationRequest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:2:2025:1:SecurityEventNotificationRequest", 4 | "comment": "OCPP 2.1 Edition 1 (c) OCA, Creative Commons Attribution-NoDerivatives 4.0 International Public License", 5 | "definitions": { 6 | "CustomDataType": { 7 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 8 | "javaType": "CustomData", 9 | "type": "object", 10 | "properties": { 11 | "vendorId": { 12 | "type": "string", 13 | "maxLength": 255 14 | } 15 | }, 16 | "required": [ 17 | "vendorId" 18 | ] 19 | } 20 | }, 21 | "type": "object", 22 | "additionalProperties": false, 23 | "properties": { 24 | "type": { 25 | "description": "Type of the security event. This value should be taken from the Security events list.\r\n", 26 | "type": "string", 27 | "maxLength": 50 28 | }, 29 | "timestamp": { 30 | "description": "Date and time at which the event occurred.\r\n", 31 | "type": "string", 32 | "format": "date-time" 33 | }, 34 | "techInfo": { 35 | "description": "Additional information about the occurred security event.\r\n", 36 | "type": "string", 37 | "maxLength": 255 38 | }, 39 | "customData": { 40 | "$ref": "#/definitions/CustomDataType" 41 | } 42 | }, 43 | "required": [ 44 | "type", 45 | "timestamp" 46 | ] 47 | } -------------------------------------------------------------------------------- /ocpp/v21/schemas/SecurityEventNotificationResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:2:2025:1:SecurityEventNotificationResponse", 4 | "comment": "OCPP 2.1 Edition 1 (c) OCA, Creative Commons Attribution-NoDerivatives 4.0 International Public License", 5 | "definitions": { 6 | "CustomDataType": { 7 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 8 | "javaType": "CustomData", 9 | "type": "object", 10 | "properties": { 11 | "vendorId": { 12 | "type": "string", 13 | "maxLength": 255 14 | } 15 | }, 16 | "required": [ 17 | "vendorId" 18 | ] 19 | } 20 | }, 21 | "type": "object", 22 | "additionalProperties": false, 23 | "properties": { 24 | "customData": { 25 | "$ref": "#/definitions/CustomDataType" 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /ocpp/v21/schemas/SetMonitoringBaseRequest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:2:2025:1:SetMonitoringBaseRequest", 4 | "comment": "OCPP 2.1 Edition 1 (c) OCA, Creative Commons Attribution-NoDerivatives 4.0 International Public License", 5 | "definitions": { 6 | "MonitoringBaseEnumType": { 7 | "description": "Specify which monitoring base will be set\r\n", 8 | "javaType": "MonitoringBaseEnum", 9 | "type": "string", 10 | "additionalProperties": false, 11 | "enum": [ 12 | "All", 13 | "FactoryDefault", 14 | "HardWiredOnly" 15 | ] 16 | }, 17 | "CustomDataType": { 18 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 19 | "javaType": "CustomData", 20 | "type": "object", 21 | "properties": { 22 | "vendorId": { 23 | "type": "string", 24 | "maxLength": 255 25 | } 26 | }, 27 | "required": [ 28 | "vendorId" 29 | ] 30 | } 31 | }, 32 | "type": "object", 33 | "additionalProperties": false, 34 | "properties": { 35 | "monitoringBase": { 36 | "$ref": "#/definitions/MonitoringBaseEnumType" 37 | }, 38 | "customData": { 39 | "$ref": "#/definitions/CustomDataType" 40 | } 41 | }, 42 | "required": [ 43 | "monitoringBase" 44 | ] 45 | } -------------------------------------------------------------------------------- /ocpp/v21/schemas/StatusNotificationResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:2:2025:1:StatusNotificationResponse", 4 | "comment": "OCPP 2.1 Edition 1 (c) OCA, Creative Commons Attribution-NoDerivatives 4.0 International Public License", 5 | "definitions": { 6 | "CustomDataType": { 7 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 8 | "javaType": "CustomData", 9 | "type": "object", 10 | "properties": { 11 | "vendorId": { 12 | "type": "string", 13 | "maxLength": 255 14 | } 15 | }, 16 | "required": [ 17 | "vendorId" 18 | ] 19 | } 20 | }, 21 | "type": "object", 22 | "additionalProperties": false, 23 | "properties": { 24 | "customData": { 25 | "$ref": "#/definitions/CustomDataType" 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /ocpp/v21/schemas/UnlockConnectorRequest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:2:2025:1:UnlockConnectorRequest", 4 | "comment": "OCPP 2.1 Edition 1 (c) OCA, Creative Commons Attribution-NoDerivatives 4.0 International Public License", 5 | "definitions": { 6 | "CustomDataType": { 7 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 8 | "javaType": "CustomData", 9 | "type": "object", 10 | "properties": { 11 | "vendorId": { 12 | "type": "string", 13 | "maxLength": 255 14 | } 15 | }, 16 | "required": [ 17 | "vendorId" 18 | ] 19 | } 20 | }, 21 | "type": "object", 22 | "additionalProperties": false, 23 | "properties": { 24 | "evseId": { 25 | "description": "This contains the identifier of the EVSE for which a connector needs to be unlocked.\r\n", 26 | "type": "integer", 27 | "minimum": 0.0 28 | }, 29 | "connectorId": { 30 | "description": "This contains the identifier of the connector that needs to be unlocked.\r\n", 31 | "type": "integer", 32 | "minimum": 0.0 33 | }, 34 | "customData": { 35 | "$ref": "#/definitions/CustomDataType" 36 | } 37 | }, 38 | "required": [ 39 | "evseId", 40 | "connectorId" 41 | ] 42 | } -------------------------------------------------------------------------------- /ocpp/v21/schemas/UnpublishFirmwareRequest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:2:2025:1:UnpublishFirmwareRequest", 4 | "comment": "OCPP 2.1 Edition 1 (c) OCA, Creative Commons Attribution-NoDerivatives 4.0 International Public License", 5 | "definitions": { 6 | "CustomDataType": { 7 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 8 | "javaType": "CustomData", 9 | "type": "object", 10 | "properties": { 11 | "vendorId": { 12 | "type": "string", 13 | "maxLength": 255 14 | } 15 | }, 16 | "required": [ 17 | "vendorId" 18 | ] 19 | } 20 | }, 21 | "type": "object", 22 | "additionalProperties": false, 23 | "properties": { 24 | "checksum": { 25 | "description": "The MD5 checksum over the entire firmware file as a hexadecimal string of length 32. \r\n", 26 | "type": "string", 27 | "maxLength": 32 28 | }, 29 | "customData": { 30 | "$ref": "#/definitions/CustomDataType" 31 | } 32 | }, 33 | "required": [ 34 | "checksum" 35 | ] 36 | } -------------------------------------------------------------------------------- /ocpp/v21/schemas/UnpublishFirmwareResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:2:2025:1:UnpublishFirmwareResponse", 4 | "comment": "OCPP 2.1 Edition 1 (c) OCA, Creative Commons Attribution-NoDerivatives 4.0 International Public License", 5 | "definitions": { 6 | "UnpublishFirmwareStatusEnumType": { 7 | "description": "Indicates whether the Local Controller succeeded in unpublishing the firmware.\r\n", 8 | "javaType": "UnpublishFirmwareStatusEnum", 9 | "type": "string", 10 | "additionalProperties": false, 11 | "enum": [ 12 | "DownloadOngoing", 13 | "NoFirmware", 14 | "Unpublished" 15 | ] 16 | }, 17 | "CustomDataType": { 18 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 19 | "javaType": "CustomData", 20 | "type": "object", 21 | "properties": { 22 | "vendorId": { 23 | "type": "string", 24 | "maxLength": 255 25 | } 26 | }, 27 | "required": [ 28 | "vendorId" 29 | ] 30 | } 31 | }, 32 | "type": "object", 33 | "additionalProperties": false, 34 | "properties": { 35 | "status": { 36 | "$ref": "#/definitions/UnpublishFirmwareStatusEnumType" 37 | }, 38 | "customData": { 39 | "$ref": "#/definitions/CustomDataType" 40 | } 41 | }, 42 | "required": [ 43 | "status" 44 | ] 45 | } -------------------------------------------------------------------------------- /ocpp/v21/schemas/UsePriorityChargingRequest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:2:2025:1:UsePriorityChargingRequest", 4 | "comment": "OCPP 2.1 Edition 1 (c) OCA, Creative Commons Attribution-NoDerivatives 4.0 International Public License", 5 | "definitions": { 6 | "CustomDataType": { 7 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 8 | "javaType": "CustomData", 9 | "type": "object", 10 | "properties": { 11 | "vendorId": { 12 | "type": "string", 13 | "maxLength": 255 14 | } 15 | }, 16 | "required": [ 17 | "vendorId" 18 | ] 19 | } 20 | }, 21 | "type": "object", 22 | "additionalProperties": false, 23 | "properties": { 24 | "transactionId": { 25 | "description": "The transaction for which priority charging is requested.\r\n", 26 | "type": "string", 27 | "maxLength": 36 28 | }, 29 | "activate": { 30 | "description": "True to request priority charging.\r\nFalse to request stopping priority charging.\r\n", 31 | "type": "boolean" 32 | }, 33 | "customData": { 34 | "$ref": "#/definitions/CustomDataType" 35 | } 36 | }, 37 | "required": [ 38 | "transactionId", 39 | "activate" 40 | ] 41 | } -------------------------------------------------------------------------------- /ocpp/v21/schemas/VatNumberValidationRequest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-06/schema#", 3 | "$id": "urn:OCPP:Cp:2:2025:1:VatNumberValidationRequest", 4 | "comment": "OCPP 2.1 Edition 1 (c) OCA, Creative Commons Attribution-NoDerivatives 4.0 International Public License", 5 | "definitions": { 6 | "CustomDataType": { 7 | "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.", 8 | "javaType": "CustomData", 9 | "type": "object", 10 | "properties": { 11 | "vendorId": { 12 | "type": "string", 13 | "maxLength": 255 14 | } 15 | }, 16 | "required": [ 17 | "vendorId" 18 | ] 19 | } 20 | }, 21 | "type": "object", 22 | "additionalProperties": false, 23 | "properties": { 24 | "vatNumber": { 25 | "description": "VAT number to check.\r\n\r\n", 26 | "type": "string", 27 | "maxLength": 20 28 | }, 29 | "evseId": { 30 | "description": "EVSE id for which check is done\r\n\r\n", 31 | "type": "integer", 32 | "minimum": 0.0 33 | }, 34 | "customData": { 35 | "$ref": "#/definitions/CustomDataType" 36 | } 37 | }, 38 | "required": [ 39 | "vatNumber" 40 | ] 41 | } -------------------------------------------------------------------------------- /tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mobilityhouse/ocpp/c7a3907ab84f16314a34fc399aec970241c8ac4d/tests/__init__.py -------------------------------------------------------------------------------- /tests/conftest.py: -------------------------------------------------------------------------------- 1 | from unittest.mock import AsyncMock 2 | 3 | import pytest 4 | 5 | 6 | @pytest.fixture 7 | def connection(): 8 | class Connection: 9 | pass 10 | 11 | connection = Connection() 12 | connection.send = AsyncMock() 13 | 14 | return connection 15 | -------------------------------------------------------------------------------- /tests/experimental/v21/README.rst: -------------------------------------------------------------------------------- 1 | ============= 2 | Tests To Support The Experimental Module For OCPP 2.1 3 | ============= 4 | Changes made in this module will not follow the traditional release cycle. 5 | This allows for breaking changes to be introduced, as the standard is not finalised. -------------------------------------------------------------------------------- /tests/test_routing.py: -------------------------------------------------------------------------------- 1 | from ocpp.routing import after, create_route_map, on 2 | from ocpp.v16.enums import Action 3 | 4 | 5 | def test_create_route_map(): 6 | """ 7 | This test validates that route map is created correctly and holds all 8 | functions decorated with the @on() and @after decorators. 9 | 10 | """ 11 | 12 | class ChargePoint: 13 | @on(Action.heartbeat, skip_schema_validation=True) 14 | def on_heartbeat(self): 15 | pass 16 | 17 | @after(Action.heartbeat) 18 | def after_heartbeat(self): 19 | pass 20 | 21 | @on(Action.meter_values) 22 | def meter_values(self): 23 | pass 24 | 25 | def undecorated(self): 26 | pass 27 | 28 | cp = ChargePoint() 29 | route_map = create_route_map(cp) 30 | 31 | assert route_map == { 32 | Action.heartbeat: { 33 | "_on_action": cp.on_heartbeat, 34 | "_after_action": cp.after_heartbeat, 35 | "_skip_schema_validation": True, 36 | }, 37 | Action.meter_values: { 38 | "_on_action": cp.meter_values, 39 | "_skip_schema_validation": False, 40 | }, 41 | } 42 | --------------------------------------------------------------------------------